Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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 pivot查询只返回一行_Sql Server_Pivot - Fatal编程技术网

Sql server SQL Server pivot查询只返回一行

Sql server SQL Server pivot查询只返回一行,sql-server,pivot,Sql Server,Pivot,我的数据如下: ID ColumnName columnnvalue ----------------------------- 13 seraialnew tester name 13 serial 123123 13 seraialnew am444 13 serial 33333 SELECT id,seraialnew,serial FROM ( SELECT id,columnnvalue, ColumnName F

我的数据如下:

ID  ColumnName  columnnvalue
----------------------------- 
13  seraialnew   tester name
13  serial        123123
13  seraialnew    am444
13  serial        33333


SELECT  id,seraialnew,serial
  FROM (
   SELECT id,columnnvalue, ColumnName  FROM dbo.formValues
  ) cols
PIVOT(
    MAX(id)
    FOR ColumnName IN(seraialnew,serial)
)p

如果您得到相同的
id
则只有一个字符串,因此我更改了其中两行的id:

;WITH formValues AS (
SELECT *
FROM (VALUES
(13,'seraialnew','tester name'),
(13,'serial','123123'),
(14,'seraialnew','am444'),
(14,'serial','33333')
) as t(ID, ColumnName, columnnvalue)
)

SELECT  id,seraialnew,serial
  FROM (
   SELECT id,columnnvalue, ColumnName
   FROM formValues
  ) cols
PIVOT(
    MAX(columnnvalue)
    FOR ColumnName IN(seraialnew,serial)
)p
将为您提供:

id  seraialnew  serial
13  tester name 123123
14  am444       33333
另一种方式:

SELECT *
FROM (
    SELECT  id,
            columnnvalue,
            ColumnName+CAST(ROW_NUMBER() OVER (PARTITION BY ColumnName ORDER BY ColumnName) as nvarchar(1)) as ColumnName
    FROM formValues
) cols
PIVOT(
    MAX(columnnvalue)
    FOR ColumnName IN(seraialnew1,serial1,seraialnew2,serial2)
)p
使用相同的
id=13
将为您提供以下信息:

id  seraialnew1 serial1 seraialnew2 serial2
13  am444       33333   tester name 123123

ID都是一样的-
13
。这就是为什么会得到1行。您希望它返回什么?我想创建一个表的动态结果add列,并在neasted子表中添加值,然后使用此组合获得结果。当id向表中添加列时,此结果会在下表中添加记录为的新列