我有两个表(订单标题和订单行)。我想添加按月和年分组的订单行,但是它带给我所有订单的所有行。有什么办法总结吗?
这可能是因为我每行进行一次计算。 我需要每行执行一次,因为库存来自几个不同的地方。 例如,一个库存来自后街,另一库存来自另一街区。 如果我使用总折扣作为销售订单,则在库存来自不同地方的情况下,它将使同一订单翻倍。 如果我使用该计算法来对每行进行折扣,它将逐行带来(肯定)。 还有其他可能性吗? 我尝试使用变量,但不能在同一变量上传递多个值。
SELECT
MONTH(X.DOCDATE) MES,
YEAR(X.DOCDATE) ANO,
(100 - X.DiscPrcnt)* SUM(LineTotal) /100 as 'TOTAL'
FROM RDR1 INNER JOIN ORDR X ON RDR1.DocEntry = X.DocEntry
WHERE X.CANCELED <> 'Y'
AND X.DocTotal > 0
AND X.DocDate BETWEEN '20140101' AND '20190630'
AND OcrCode IN ('EXT', 'EXT-JD')
Group by
X.DOCDATE,
X.DiscPrcnt
ORDER BY X.DOCDATE
我希望是这样
Month YEAR Total
1 2014 5000
2 2014 7000
答案 0 :(得分:0)
我想您想按月和年而不是整个日期分组。另外,我认为您可能不想为每个折扣百分比值单独添加一行吗?
该查询如何?:-
SELECT
MONTH(X.DOCDATE) MES,
YEAR(X.DOCDATE) ANO,
SUM((100 - X.DiscPrcnt)* X.LineTotal/100) as 'TOTAL'
FROM RDR1 INNER JOIN ORDR X ON RDR1.DocEntry = X.DocEntry
WHERE X.CANCELED <> 'Y'
AND X.DocTotal > 0
AND X.DocDate BETWEEN '20140101' AND '20190630'
AND OcrCode IN ('EXT', 'EXT-JD')
Group by
YEAR(X.DOCDATE),
MONTH(X.DOCDATE)
ORDER BY
YEAR(X.DOCDATE),
MONTH(X.DOCDATE)