Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在一列中分隔两行并在两列中显示_Sql Server - Fatal编程技术网

Sql server 在一列中分隔两行并在两列中显示

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

我有一个表'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      (
        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)