sql - Somar um valor total e retornar muitas linhas
问题描述
我有两个表(订单标题和订单行)。我想添加订单行,按月和年分组,但它给我带来了所有订单的所有行。你有办法总结吗?
这可能是因为我每行进行一次计算。我需要每行都这样做,因为库存来自几个不同的地方。例如,一只股票来自后街,另一只股票来自另一个街区。如果我使用销售订单的总折扣,如果库存来自不同的地方,它会使同一订单翻倍。如果我使用计算来制作每行折扣,它将逐行带来(当然)。还有其他可能吗?我尝试使用变量,但我不能在同一个变量上传递多个值。
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
解决方案
我想你想按月份和年份而不是完整日期分组。另外,我认为您可能不希望每个折扣百分比值都有单独的行,对吗?
这个查询怎么样?:-
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)
推荐阅读
- javascript - 单击按钮后集成 SetTimeOut 功能
- c# - 如何从 ASP.NET MVC 表单和 Webgrid 将数据发布到控制器
- r - 将一列除以一个数字
- reactjs - 中继编译器无法在 Typescript 中提取和使用 graphql 查询
- asp.net-core-2.2 - .NET Core 2.2 RawRabbit 序列化器/依赖注入问题
- sql - 在连接子句中使用子查询而不是列名
- terraform - 如何有条件地填充 terraform 中的参数值?
- php - 为什么 v2 和 v3 权限/列表结果之间的输出差异
- c - UDP聊天的非阻塞功能
- debugging - 如何创建以时钟时间开始和结束的基于时间的延迟?