我可以在 SQL 服务器中没有分组依据的情况下旋转动态 table

Can I pivot dynamic table with no group by in SQL Server

这是我在 table 中的数据(来自字段 table 和值 table 的左连接)

这是我使用枢轴函数后的预期结果table

感谢帮助^___^

我不确定为什么 group by 会进入你的脑海,但这里有一个你正在努力实现的工作示例。

    select *  into #temp from   
( values
(1,'A','AV'),
(1,'B','BV'),
(1,'C','CV'),
(2,'A','AV'),
(2,'B','BV'),
(2,'C','CV')) 
as t(row, FieldName, FieldValue)

select * 
from #temp
PIVOT
(MAX(FieldValue) FOR FieldName in ([A],[B],[C])) as pvt

这对你有用吗?

我建议您使用动态 SQL,因为 fieldnames 将来可能会出现这样的数字:

DECLARE @columns nvarchar(max),
        @sql nvarchar(max)

SELECT @columns = COALESCE(@columns,'') + ',' + QUOTENAME(c.fieldname)
FROM [Columns] c
ORDER BY c.cid

SELECT @sql = N'
SELECT *
FROM (
    SELECT  v.[row],
            c.fieldname,
            v.fieldvalue
    FROM [Values] v
    INNER JOIN [Columns] c
        ON v.cid = c.cid
    ) t
PIVOT (
    MAX(fieldvalue) FOR fieldname IN ('+STUFF(@columns,1,1,'')+')
) pvt'

EXEC sp_executesql @sql

将输出:

row FirstName   LastName    Email               Phone
1   Arnun       Saelim      Arnun.s@outlook.com 0922743838
2   Micheal     Saelim      Micheal@gmail.com   0886195353