Sql 腰臀总肌群

Sql 腰臀总肌群,sql,group-by,Sql,Group By,我有两个表(订单标题和订单行)。我想添加订单行,按月份和年份分组,但它会显示所有订单的所有行。你能总结一下吗 这可能是因为我每行做一次计算。 我需要做每行,因为股票是从几个不同的地方。 例如,一只股票来自后街,另一只股票来自另一个街区。 如果我对销售订单使用总折扣,那么如果库存来自不同的地方,它将使同一订单翻倍。 如果我用这个计算来计算每行的折扣,它会一行一行地带来(当然)。 还有其他可能吗? 我尝试使用变量,但不能在同一个变量上传递多个值 SELECT MONTH(X.DOCDA

我有两个表(订单标题和订单行)。我想添加订单行,按月份和年份分组,但它会显示所有订单的所有行。你能总结一下吗

这可能是因为我每行做一次计算。 我需要做每行,因为股票是从几个不同的地方。 例如,一只股票来自后街,另一只股票来自另一个街区。 如果我对销售订单使用总折扣,那么如果库存来自不同的地方,它将使同一订单翻倍。 如果我用这个计算来计算每行的折扣,它会一行一行地带来(当然)。 还有其他可能吗? 我尝试使用变量,但不能在同一个变量上传递多个值

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

我想你想按月份和年份分组,而不是按完整日期分组。另外,我想您可能不想为每个折扣百分比值单独设置一行,对吗

这个查询怎么样-

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)

选择
月(X.DOCDATE)MES,
年份(X.DOCDATE)ANO,
总计((100-X.DiscPrcnt)*X.LineTotal/100)为“总计”
从RDR1.DocEntry=X.DocEntry上的RDR1内部联接ORDR X
其中X取消了“Y”
和X.DocTotal>0
X.DocDate介于“20140101”和“20190630”之间
和OcrCode IN('EXT','EXT-JD')
分组
年份(X.DOCDATE),
月份(X.DOCDATE)
订购人
年份(X.DOCDATE),
月份(X.DOCDATE)

请翻译标题和相应的标签,就像mysqlI的意思是添加标签w!!我怎么能不这样看呢?非常感谢你的帮助,保罗·汉弗莱斯!不幸的是,我必须计算每行的折扣,否则sql会因为一个订单行而带来相同的请求dusa次,总值相等。例如,将“EXT”和“EXT-JD”按相同顺序储存。再次感谢您抽出时间来帮助我!
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)