【发布时间】:2019-11-13 22:28:29
【问题描述】:
我想将所有类似 Locations (name) 和 SUM the Volume (vol) 的位置结合起来,并在此处按月份排序结果。我试图选择一个子集并内部加入像这里这样的值,但不断得到分组而不是聚合子句错误,感谢提示! 结果应按月份排序,同一天同一位置的行应汇总在一行而不是多行。 这是我的选择语句,没有分组或求和:
SELECT
day_of_month AS 'Day of Month',
run_ticket AS 'Ticket number',
ticketdate AS 'Ticket Date',
id AS 'location id',
name AS 'location',
vol AS 'Volume',
ord_rev AS 'OrderHeader'
FROM
#RECORDS R
ORDER BY
day_of_month
当前结果: 按月中的某天排序,当天的相同位置不会汇总在一行中。
期望的结果: 按月中的某天排序,当天的相同位置汇总在一行中。 我也在汇总每天的总成交量和运行日期,但在 SSRS 中这样做。
我正在尝试 this 这样的解决方案
SELECT day_of_month AS 'Day of Month'
,run_ticket AS 'Ticket Number'
,ticketdate AS 'Ticket Date'
,r2.cmp_id AS 'Location ID'
,cmp_name AS 'location'
,SUM(vol) AS 'Volume'
,ord_rev AS 'OrderHeader'
FROM #RECORDS as r2
JOIN
(SELECT cmp_id, SUM(vol) AS 'Volume'
FROM #RECORDS
GROUP BY cmp_name
) AS s ON s.cmp_id = r2.cmp_id
GROUP BY r2.cmp_name
ORDER BY day_of_month
当我运行 proc 我得到 p>
消息 8120,级别 16,状态 1,过程 DailyLoadReportMTD,第 78 行 [批处理开始行 109] 列“#RECORDS.cmp_id”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
好的,Erics 的回答让我如此接近!只需要消除欺骗如果我 GROUP BY r.cmp_name, r.ord_revtype2, r.day_of_month 我必须添加 r.ofr_BSWheight 这会强制重复行...或抛出无效的选择错误 w/o
【问题讨论】:
-
请向我们展示示例数据和预期结果(作为表格文本)以澄清您的问题。
-
我在您发布的代码中没有看到,这会导致您提到的错误。
-
@Eric 感谢更新!
-
所有那些非聚合列都不在
GROUP BY中。因此错误。 -
在外部查询中,您按
cmp_name对记录进行分组。那么,如果您有多个记录具有相同的cmp_name,但不同的run_ticket或ord_rev,会发生什么情况。在这种情况下会选择哪一个?
标签: sql-server