我有一个名为 tblCat 的表:
ID Desc
1 Category A
2 Category B
3 Category C
第二个表是 tblItem
ID Desc Cat_Id
1 Item 1 1
2 Item 2 1
3 Item 3 2
4 Item 4 2
5 Item 5 3
6 Item 6 3
* Cat_id是tblCat。*
的连接键第三个是tblItemDetail
ID Loc Item_Id ItemValue ValueDesc
1 S1 Item 1 Color Black
2 S1 Item 1 Brand ABC
3 S1 Item 1 Status Ready
4 S1 Item 1 Discontinue False
5 S1 Item 2 Color White
6 S1 Item 2 Brand XYZ
7 S1 Item 2 Status Ready
8 S1 Item 2 Discontinue False
9 S2 Item 3 Color White
10 S2 Item 3 Brand ABC
11 S2 Item 3 Status Out-of-stock
12 S2 Item 3 Discontinue True
我可以使用此SQL构建1个单列值的交叉表:
select tbl.Loc, tbl.ItemValue, tbl.Item1, tbl.Item2, tbl.Item3,
tbl.Item4, tbl.Item5, tbl.Item6
from crosstab(
'select Loc, Item_Id, ItemValue, ValueDesc
from tblItemDetail',
'select Item_Id
from tblItemDetail
group by Item_Id'
) tbl(Loc text, ItemValue text, Item1 text, Item2 text, Item3 text, Item4 text,
Item5 text, Item6 text,);
结果将是:
Loc ItemValue Item 1 Item 2 Item 3 Item 4 Item 5 Item 6
S1 Color Black White
S1 Brand ABC XYZ
S1 Status Ready Ready
S1 Discontinue False False
S2 Color White
S2 Brand ABC
S2 Status Out-of-Stock
S2 Discontinue True
但是如何创建交叉表查询以显示此结果?
Cat A Cat B Cat C
Loc ItemValue Item 1 Item 2 Item 3 Item 4 Item 5 Item 6
S1 Color Black White
S1 Brand ABC XYZ
S1 Status Ready Ready
S1 Discontinue False False
S2 Color White
S2 Brand ABC
S2 Status Out-of-Stock
S2 Discontinue True
简而言之,我想知道如何构建一个具有2列级别的交叉表。