的行我有一个SQL查询,将代表一个真正的SQL查询的模拟。SQL查询 - 沿着数据透视表
Create table #tmp
(
Atype varchar(10),
Btype varchar(10)
)
insert into #tmp values ('a','x')
insert into #tmp values ('b','x')
insert into #tmp values ('a','y')
insert into #tmp values ('a','y')
insert into #tmp values ('b','z')
insert into #tmp values ('b','y')
select atype, btype,count(*) as count
from #tmp
group by atype, btype
order by atype
drop table #tmp
这会给我的结果:
atype btype count
-----------------
a x 1
a y 2
b x 1
b y 1
b z 1
我所期待的在这之后是能够创造一个报告,基本上是这样的:
atype|x| y| z
-------------
a |1| 2| 0
b |1| 1| 1
我我确信你可以使用来自疯狂的t-sql代码来做到这一点,但我很努力地做到这一点。
编辑:
我同意,你可以使用TSQL转动命令,但是当B型是可变的,会发生什么。这意味着我不知道会有多少种类型?
+1为漂亮和紧凑的代码。注意自我:使用比较运算符时,把当壳体后立即,如:可乐\t \t \t \t \t,SUM(CASE WHEN天<= 0 THEN 1 ELSE 0 END)AS [0] ,SUM(CASE当天= 1则1否则0结束)AS [1] – mg1075 2011-09-25 03:55:20
@ mg1075写'WHEN'的两种形式是互不相同的:'CASE x当1然后当2当杆终止'类似于一个`开关`声明,它不接受表达式。然而`案例当x = 1那么foo当x = 2那么吧END`类似于`if-else if'并且期望表达式。为每种情况使用适当的表格。 – Tomalak 2011-09-25 07:16:16