sql - 在 SQL Server 中的 group by 中查询有问题
问题描述
我有这个在 MySQL 中有效的查询:
SELECT
r.*, c.*
FROM
Rsv AS r
INNER JOIN
Clts AS c ON r.ClientID = c.ClientID
LEFT OUTER
Mes AS m ON r.MesaID = m.MesaID
WHERE
RHS IS NULL AND RC = 0
GROUP BY
r.ClientID;
我希望它可以在 SQL Server 中工作,并且我知道在 SQL Server 中使用 时 GROUP BY
,元素SELECT
需要位于GROUP BY
或需要具有聚合函数。但是我想选择更多元素,并且我认为我不需要对它们进行聚合函数,因为它将从哪一个中检索信息并不重要,因为只有MesaNum
字段会有所不同。我怎样才能做到这一点?
编辑:
Rsv
桌子:
RsvID MesaID ClientID RsvTime RsvDate RHS RC
1 1 1 8:00 2018-09-17 null 0
2 2 1 8:00 2018-09-17 null 0
3 3 2 9:00 2018-09-17 null 0
期望的结果:
RsvID MesaID ClientID RsvTime RsvDate RHS RC
1 1,2 1 8:00 2018-09-17 null 0
3 3 2 9:00 2018-09-17 null 0
(抱歉,这里不知道怎么做表格)
解决方案
您可以尝试使用STUFF
函数来做,然后通过get来groupby_concat
制作行号ClientID
rn = 1
SELECT * FROM (
SELECT RsvID,ClientID,RsvTime,RsvDate,RHS,RC,
STUFF((
SELECT ',' + CAST(tt.MesaID AS VARCHAR(5))
FROM Rsv tt
WHERE tt.ClientID = t1.ClientID
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') MesaID,
ROW_NUMBER() OVER(PARTITION BY ClientID ORDER BY RsvID) rn
FROM Rsv t1
) t1
where rn = 1
推荐阅读
- django - 将 Django 应用程序部署到 heroku。调试错误
- go - 如何在不使用接口的情况下扩展二叉树节点?
- python - Sagemaker 在训练期间未将 Tensorboard 日志输出到 S3
- azure-devops - Azure DevOps - 查找带有计划的管道
- powerbi - 添加自定义列时,PowerBI 无法将值 null 转换为逻辑类型
- ssis - 如何解决 SSIS 派生列转换中的条件操作失败错误?
- javascript - 使用 JQuery 封装的错误
- math - 光线追踪:物体坐标中的镜面反射
- discord.py - Discord.py 默认表情符号反应
- swift - 如何实现 SQLite.swift 值协议