Sql server 在一列中分隔两行并在两列中显示
我有一个表'Notes'和列名'Note',值为Hi和Hello 看起来像这样Sql server 在一列中分隔两行并在两列中显示,sql-server,Sql Server,我有一个表'Notes'和列名'Note',值为Hi和Hello 看起来像这样 Note -------- HI HELLO 我想在sql中将其分为两列 输出如下所示: Note1 Note2 ------------------ Hi Hello 如何在sql查询中执行此操作?如何: select max(note) as note1, min(note) as note2 from t; 这个?如果有两行以上,它应该可以工作 WITH NotesWithId AS
Note
--------
HI
HELLO
我想在sql中将其分为两列
输出如下所示:
Note1 Note2
------------------
Hi Hello
如何在sql查询中执行此操作?如何:
select max(note) as note1, min(note) as note2
from t;
这个?如果有两行以上,它应该可以工作
WITH NotesWithId
AS (
SELECT ID = ROW_NUMBER() OVER (ORDER BY (SELECT NULL)),
note
FROM Notes
)
SELECT [note1] = CASE WHEN [ID] % 2 <> 0 THEN [note] ELSE NULL END,
[note2] = CASE WHEN [ID] % 2 = 0 THEN [note] ELSE NULL END
FROM NotesWithId;
如果有三排呢?
DECLARE
@SQL VARCHAR(1000),
@COLUMN_LIST VARCHAR(200)
SET @COLUMN_LIST=(SELECT STUFF((SELECT ',[' + CONVERT(VARCHAR(5),NOTE ) +'] '
FROM (SELECT DISTINCT NOTE FROM #C)Z
FOR XML PATH('')),1,1,''))
SET @SQL=
'SELECT HI AS NOTE1 ,HELLO NOTE2 FROM
(
SELECT NOTE AS NOTE FROM #C
)B
PIVOT
(
MIN(B.NOTE) FOR B.NOTE IN ('+@COLUMN_LIST+')
)A'
SELECT @SQL
EXEC (@SQL)