如何解决需要帮助将以下查询从 My SQL 转换为 MS SQL Group_Concat 函数
SELECT
md.ID AS `ID`,t1.Name AS `Name`,group_concat(IF(t2.Column3 = 'Value1',t1.Value,NULL)) AS `Value1`,group_concat(IF(t2.Column3 = 'Value2',NULL)) AS `Value2`,group_concat(IF(t2.Column3 = 'Value3',NULL)) AS `Value3`
FROM Table1 t1
LEFT JOIN Table2 AS t2 ON t1.Column1 = t2.Column1
GROUP BY t1.Id ;
解决方法
从 SQL Server 2017 开始,您可以使用 STRING_AGG(expression,',')
代替 GROUP_CONCAT(expression)
。对于旧版本,似乎有几种方法可以做到(包括安装 GROUP_CONCAT 函数),但都没有我对 SQL Server 有足够的了解;请参阅该问题中的 Simulating group_concat MySQL function in Microsoft SQL Server 2005? 和链接。
并且您可以使用 CASE WHEN ... THEN ... ELSE ... END
(如果 else 结果为 NULL,则也可以仅使用 CASE WHEN ... THEN ... END
)代替 IF(...,...,...)
。 CASE 在 mysql 中也有效。
但是您需要按 t1.Name 分组或选择类似 MAX(t1.Name)
的内容,因为您不能使用未分组的非聚合列(就像您不能在现代版本中一样mysql 使用现代默认设置)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。