sql-server - 带有 Group BY 的 XML 路径子查询导致聚合错误
问题描述
我有以下查询,我真的很想知道如何返回结果并避免以下错误。
消息 144,级别 15,状态 1,行 40 不能在用于 GROUP BY 子句的 group by 列表的表达式中使用聚合或子查询。
SELECT Stuff((SELECT ', ' + typename
FROM visittype VD
LEFT JOIN lookup.type D
ON VD.typeid = D.typeid
WHERE visitid = V.visitid
ORDER BY D.typename
FOR xml path(''), type).value('text()[1]', 'NVARCHAR(MAX)'), 1, 1,
N'')
AS Value1,
Count(*) AS Value2
FROM visit V
WHERE V.startdate >= '2018-03-31 14:00:00.0000000 +00:00'
AND V.enddate <= '2018-06-30 13:59:59.9990000 +00:00'
GROUP BY Stuff((SELECT ', ' + typename
FROM visittype VD
LEFT JOIN lookup.type D
ON VD.typeid = D.typeid
WHERE visitid = V.visitid
ORDER BY D.typename
FOR xml path(''), type).value('text()[1]', 'NVARCHAR(MAX)'), 1,
1, N'')
解决方案
您可以使用子查询/cte:
WITH cte AS (
SELECT Stuff((SELECT ', ' + typename
FROM visittype VD
LEFT JOIN lookup.type D
ON VD.typeid = D.typeid
WHERE visitid = V.visitid
ORDER BY D.typename
FOR xml path(''), type).value('text()[1]', 'NVARCHAR(MAX)'), 1, 1,
N'') AS Value1
FROM visit V
WHERE V.startdate >= '2018-03-31 14:00:00.0000000 +00:00'
AND V.enddate <= '2018-06-30 13:59:59.9990000 +00:00'
)
SELECT Value1, COUNT(*) AS Value2
FROM cte
GROUP BY Value1;
推荐阅读
- sql - SQL Server 触发器未按预期运行
- java - 测试 SpringBoot 中使用的 HSQLDB 连接
- java - FlowLayout 拉伸其组件
- amazon-web-services - 停止 Cron Job 以关闭重启无限循环
- blueprism - Blue Prism Excel VBO 给定键不在字典错误中
- javascript - 删除 Slick Slider 淡入淡出过渡上的白色闪光
- html - 如何在 Angular 中调整 videogular2 组件的大小?
- javascript - es6 { [a]: b } 解构是什么意思?
- javascript - 未调用覆盖的 toString
- powershell - Powershell - Register-ObjectEvent mstsc 问题 - 事件未在正确的时间触发