【发布时间】:2014-07-03 09:48:18
【问题描述】:
我正在尝试从SQL multiple rows as columns (optimizing) 的问题中翻译查询。它在 MySQL 中,但我还需要它在 MS SQL Server 上运行。
一个问题是 MS SQL 中没有 GROUP_CONCAT,但似乎有办法模拟这种情况 (Simulating group_concat MySQL function in Microsoft SQL Server 2005?)。
另外,我找不到将第一个SELECT 语句存储到@sql 变量中的方法,这让我很困扰,因为我不知道如何引用colkey,就像我目前所做的那样.
MySQL 语句:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT('MAX(CASE
WHEN ckm.colkey = ', colkey, ' THEN
(ccdr.value)
END) AS ', CONCAT('`ExtraColumn_', colkey, '`'))
) INTO @sql
FROM test_customkeymapping;
SET @sql = CONCAT('SELECT c.Name, ', @sql, '
FROM customers c
LEFT JOIN customercustomdatarels ccdr
ON c.Id = ccdr.customer
LEFT JOIN customdatas cd
ON cd.Id = ccdr.customdata
LEFT JOIN test_customkeymapping ckm
ON cd.key = ckm.customkey
GROUP BY c.Id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
【问题讨论】:
标签: sql sql-server tsql