mysql - 需要帮助将以下查询从 My SQL 转换为 MS SQL Group_Concat 函数
问题描述
我需要帮助将以下查询从我的 sql 转换为 MS SQL
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', t1.Value, NULL)) AS `Value2`,
group_concat(IF(t2.Column3 = 'Value3', t1.Value, 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)
请参阅在 Microsoft SQL Server 2005 中模拟 group_concat MySQL 函数?以及该问题中的链接。
并且您可以使用CASE WHEN ... THEN ... ELSE ... END
(或者仅CASE WHEN ... THEN ... END
当 else 结果为 NULL 时)代替IF(..., ..., ...)
. CASE 在 mysql 中也有效。
但是您需要按 t1.Name 分组或选择类似的东西MAX(t1.Name)
,因为您不能使用未分组的非聚合列(就像在现代版本的 mysql 中不能使用现代默认设置一样)。
推荐阅读
- ios - Cordova InAppBrowser 设置自定义分析
- react-native - 反应原生 | 自动宽度 100%
- scikit-learn - sklearn ndcg_score 返回了不正确的结果
- android - 如何使用 cordova-plugin-background 模式
- c++ - 将对象文件添加到 JIT 并从 IR 代码中调用它
- javascript - 将元素加载到从 Redux 或数据库中获取名称的组件
- java - 如何使用 Hibernate 持久化枚举类型字段?
- matrix - 在 Sage 中解决矩阵中的缺失值
- node.js - 使用 node-postgres 查询的 Promise 总是返回 undefined
- c++ - 编译器是否允许围绕 `std::condition_variable::notify_one` 重新排序语句?