【发布时间】:2016-01-05 17:33:19
【问题描述】:
我有一个将垂直数据库设计转换为水平数据库设计的数据透视表:
源表:
Id ParentId Property Value
---------------------------------
1 1 Date 01-09-2015
2 1 CountValue 2
3 1 TypeA Value1
4 1 TypeB Value2
5 1 TypeC Value2
6 2 Date 15-10-2015
7 2 CountValue 3
8 2 TypeA Value3
9 2 TypeB Value22
10 2 TypeC Value99
旋转后看起来像:
ParentId Date CountValue TypeA TypeB TypeC
----------------------------------------------------------
1 01-09-2015 2 Value1 Value2 Value2
2 15-10-2015 3 Value3 Value22 Value99
然后,在TypeA、TypeB 和TypeC 列中有一个有效值的查找表:
Id Name Value
-----------------
1 TypeA Value1
2 TypeA Value2
3 TypeA Value3
4 TypeB Value20
5 TypeB Value21
6 TypeB Value22
7 TypeC Value1
8 TypeC Value2
因此,鉴于上述结构,我正在寻找一种方法来查询数据透视表,以便我可以计算 TypeA、TypeB 和 TypeC 中的所有无效值,其中 @987654330 @ 是有效日期,CountValue 不为空且大于 0。
我怎样才能获得如下预期和输出的结果:
Count Column
--------------
0 TypeA
1 TypeB
1 TypeC
我通过创建三个查询并使用 UNION 粘合结果来完成结果,但我认为也应该可以使用数据透视表,但我不确定如何。使用数据透视表可以实现想要的结果吗?
注意:使用的数据库是 SQL Server 2005 数据库。
【问题讨论】:
标签: sql tsql sql-server-2005