我正在尝试获取 iScala ERP 中每月销售额的统计数据。iScala 报告系统报告此值。
我的 Sql 查询返回
3 058 023 2017-01-01
2 237 651 2017-02-01
4 700 720 2017-03-01
2 268 501 2017-04-01
3 183 576 2017-05-01
3 238 173 2017-06-01
1 949 041 2017-07-01
3 077 111 2017-08-01
我的查询,从发票 SL03 中选择应用订单 OR20 以减去运费金额。之后,我在 SL29 Invoice Consolidation History 中使用交叉应用来减去 Freight 和 SaleTax。
BEGIN
SELECT
SUM(cast(replace(isnull(b,0),',','.') as decimal(10,0))) Total,
cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, d), 0) as date) as varchar(50)) date
FROM (
SELECT
SUM(SL03100-aa.f) b ,
cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, SL03004), 0) as date) as varchar(50)) d
FROM SL030100
CROSS apply (
SELECT top 1 OR20044 f
FROM OR200100
WHERE SL030100.SL03036 = OR200100.OR20001
) aa
WHERE SL03004 BETWEEN '2017-01-01' AND DATEADD(d, 1,getdate())
group by cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, SL03004), 0) as date) as varchar(50))
UNION
SELECT
SUM((SL29007-SL29009-ba.f)) b,
cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, SL29006), 0) as date) as varchar(50)) d
FROM SL290100
CROSS apply (
SELECT top 1 OR20044 f
FROM OR200100
WHERE SL290100.SL29028 = OR200100.OR20001
) ba
WHERE SL29006 BETWEEN '2017-01-01' AND DATEADD(d, 1,getdate())
group by cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, SL29006), 0) as date) as varchar(50))
) AS tbl
group by cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, d), 0) as date) as varchar(50))
order by cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, d), 0) as date) as varchar(50))
END
我不知道这是否是最好的方法或缺少哪些字段。我觉得内部报告和我的 SQL 结果之间的差异很小,但对客户来说很明显。
我希望你能指出我正确的方向或一些可以提供帮助的资源。
此致
MK