透视和连接 SQL 服务器中列的值
Pivot and concatenate values from column in SQL Server
我有 table 这些列:
ID | Name | Value
------------------
1 | Test1 | 0
2 | Test2 | 1
3 | Test3 | 0
4 | Test4 | 0
5 | Test5 | 1
我想将值列作为字符串进行旋转和连接
01001
SELECT GROUP_CONCAT(Value SEPARATOR '') FROM Table
编辑:
无法在 SQL 服务器上工作。查看 Simulating group_concat MySQL function in Microsoft SQL Server 2005? 以尝试使其正常工作
下面的代码将给出预期的结果:
SELECT @Result = @Result + CAST(VALUE AS VARCHAR)
FROM #TmpTestingTable
或者您可以使用 STUFF
:
SELECT STUFF(
( SELECT CAST(VALUE AS VARCHAR)
FROM #TmpTestingTable
FOR XML PATH ('')
), 1, 0, '')
例如,我将列插入临时 table 并执行代码。
CREATE TABLE #TmpTestingTable (ID INT, Name VARCHAR (20), Value INT)
INSERT INTO #TmpTestingTable (ID, Name, Value) VALUES
(1 , 'Test1' , 0),
(2 , 'Test2' , 1),
(3 , 'Test3' , 0),
(4 , 'Test4' , 0),
(5 , 'Test5' , 1)
DECLARE @Result AS VARCHAR (100) = '';
-- using variable approach
SELECT @Result = @Result + CAST(VALUE AS VARCHAR)
FROM #TmpTestingTable
SELECT @Result
-- using STUFF approach
SELECT STUFF(
( SELECT CAST(VALUE AS VARCHAR)
FROM #TmpTestingTable
FOR XML PATH ('')
), 1, 0, '')
DROP TABLE #TmpTestingTable
使用FOR XML连接。还包括一个 ORDER BY 很重要。否则,您无法控制值的顺序,并且会冒任意顺序的风险。
SELECT
(SELECT CAST([VALUE] AS CHAR(1))
FROM yourtable
ORDER BY ID
FOR XML PATH ('')
)
我有 table 这些列:
ID | Name | Value
------------------
1 | Test1 | 0
2 | Test2 | 1
3 | Test3 | 0
4 | Test4 | 0
5 | Test5 | 1
我想将值列作为字符串进行旋转和连接
01001
SELECT GROUP_CONCAT(Value SEPARATOR '') FROM Table
编辑:
无法在 SQL 服务器上工作。查看 Simulating group_concat MySQL function in Microsoft SQL Server 2005? 以尝试使其正常工作
下面的代码将给出预期的结果:
SELECT @Result = @Result + CAST(VALUE AS VARCHAR)
FROM #TmpTestingTable
或者您可以使用 STUFF
:
SELECT STUFF(
( SELECT CAST(VALUE AS VARCHAR)
FROM #TmpTestingTable
FOR XML PATH ('')
), 1, 0, '')
例如,我将列插入临时 table 并执行代码。
CREATE TABLE #TmpTestingTable (ID INT, Name VARCHAR (20), Value INT)
INSERT INTO #TmpTestingTable (ID, Name, Value) VALUES
(1 , 'Test1' , 0),
(2 , 'Test2' , 1),
(3 , 'Test3' , 0),
(4 , 'Test4' , 0),
(5 , 'Test5' , 1)
DECLARE @Result AS VARCHAR (100) = '';
-- using variable approach
SELECT @Result = @Result + CAST(VALUE AS VARCHAR)
FROM #TmpTestingTable
SELECT @Result
-- using STUFF approach
SELECT STUFF(
( SELECT CAST(VALUE AS VARCHAR)
FROM #TmpTestingTable
FOR XML PATH ('')
), 1, 0, '')
DROP TABLE #TmpTestingTable
使用FOR XML连接。还包括一个 ORDER BY 很重要。否则,您无法控制值的顺序,并且会冒任意顺序的风险。
SELECT
(SELECT CAST([VALUE] AS CHAR(1))
FROM yourtable
ORDER BY ID
FOR XML PATH ('')
)