我有一个包含3列的表:X,Y,Z。
X和Y将包含整数列表,Z将包含一些文本。
For Instance
X Y Z
1 1 'A'
1 2 'B'
2 1 'C'
2 2 'D'
3 1 'E'
3 2 'F'
我想将值显示在Matrix中,因此它看起来像这样
A B
C D
E F
X和Y中的值可以变化,例如X将包含值1到6,Y将是1到5,但是应该有30个条目(即5 * 6 = 30),但我想处理缺少条目的情况。
我该如何做到这一点并优雅地将其存储在视图中?
更新:这需要在不知道X和Y值的情况下提前完成,因为它可能会改变,但只会有这么多列
答案 0 :(得分:2)
基本上,您要做的是pivot表:
SELECT x, [1], [2], [3], [4], [5]
FROM (SELECT x, y, z FROM myTable) AS source
PIVOT (MIN(z) FOR [y] IN ([1], [2], [3], [4], [5])) AS pivoted
应该(未经测试)产量:
x 1 2 3 4 5
-----------
1 A B
2 C D
3 E F
(缺少值包含NULL)。
请注意,您需要修复 SQL返回的列数,因此如果未使用,则无法跳过第3-5列。换句话说,如果y的最大值未知,则不可能使用(静态)SQL执行此操作。
添加numbers table的缺失行作为练习。
答案 1 :(得分:0)
select t1.z, t2.z
from table t1
join table t2
on t1.x = t2.x
and t1.y = 1
and t2.y = 2