我有一个表格,其中包含如下数据:
A1 FID A2 0 0 39 1 0 23 0 1 16 1 1 64 2 1 12 0 2 76 0 3 11 0 4 87
我想创建一个列出这个的视图:
FID Col0 Col1 Col2 0 39 23 空 1 16 64 12 2 76 空空 3 11 null null 4 87 空空
这在 T-SQL 中怎么可能实现?
我有一个表格,其中包含如下数据:
A1 FID A2 0 0 39 1 0 23 0 1 16 1 1 64 2 1 12 0 2 76 0 3 11 0 4 87
我想创建一个列出这个的视图:
FID Col0 Col1 Col2 0 39 23 空 1 16 64 12 2 76 空空 3 11 null null 4 87 空空
这在 T-SQL 中怎么可能实现?
你可以使用这样的东西:
SELECT FID,
Col0 = MAX(CASE WHEN A1 = 0 THEN A2 END),
Col1 = MAX(CASE WHEN A1 = 1 THEN A2 END),
Col2 = MAX(CASE WHEN A1 = 2 THEN A2 END)
FROM T
GROUP BY FID;
或者你可以使用PIVOT
SELECT pvt.FID,
[Col0] = pvt.[0],
[Col1] = pvt.[1],
[Col2] = pvt.[2]
FROM T
PIVOT
( MAX(A2)
FOR A1 IN ([0], [1], [2])
) pvt
如果 A1 的值数量未知,因此列数未知,则无法在视图中执行此操作。您将需要使用动态 SQL,尽管这通常在应用程序层而不是 SQL-Server 本身中处理得更好