使用其他表记录中的列创建SQL视图

时间:2013-09-30 16:10:36

标签: sql sql-server

我有一个包含以下数据的表:

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  null
1    16   64   12
2    76  null null
3    11  null null
4    87  null null

如何才能在T-SQL中实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

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

<强> Examples of Both on SQL Fiddle

如果A1的值有未知数量,因此列数未知,则无法在视图中执行此操作。您需要使用动态SQL,尽管通常在应用程序层中更好地处理,而不是在SQL-Server本身