一个比较麻烦的问题,哪位能够一个SQL语句搞定?

redwj 2006-02-09 05:37:48
假设一个表A:
字段名:F1 TYPE(只有0/1两种)
001 1
001 1
001 0
002 0
... .

我想用一条SQL语句,生成一下统计结果集:
字段名:F1 TYPE0 TYPE1
001 1 2
002 1 0

我能实现,但是感觉较复杂,哪位有比较简单的方法?


...全文
113 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bugchen888 2006-02-10
pivot是SQL Server 2005的语法。
回复
redwj 2006-02-10
多谢大家。
另to:zjcxc(邹建)。pivot是什么意思,不是T-SQL语句的吧,那是哪种SQL语法?请教!
回复
zjcxc 2006-02-09
declare @A table(F1 varchar(10),TYPE int)
insert into @A select '001',1
insert into @A select '001',1
insert into @A select '001',0
insert into @A select '002',0


select
F1,TYPE0=[0],TYPE1=[1]
from @A
pivot(
COUNT(TYPE)
FOR TYPE in([0],[1])
) F1

/*--结果
F1 TYPE0 TYPE1
---------- ----------- -----------
001 1 2
002 1 0

(2 row(s) affected)
--*/
回复
应该算比较常用而且简单的
回复
lsqkeke 2006-02-09
差不多了 :)
回复
rouqu 2006-02-09
大概也就这样了吧
回复
子陌红尘 2006-02-09
应该算比较常用而且简单的
回复
redwj 2006-02-09
我也是这个方法,这个最常用吗?
回复
子陌红尘 2006-02-09
declare @A table(F1 varchar(10),TYPE int)
insert into @A select '001',1
insert into @A select '001',1
insert into @A select '001',0
insert into @A select '002',0


select
F1,
TYPE0=sum(case TYPE when 0 then 1 else 0 end),
TYPE1=sum(case TYPE when 1 then 1 else 0 end)
from
@A
group by
F1

/*
F1 TYPE0 TYPE1
---------- ----------- -----------
001 1 2
002 1 0
*/
回复
bugchen888 2006-02-09
SELECT F1, SUM(CASE TYPE WHEN 0 THEN 1 ELSE 0 END) AS TYPE0,
SUM(CASE TYPE WHEN 1 THEN 1 ELSE 0 END) AS TYPE1
FROM A
GROUP BY F1
回复
子陌红尘 2006-02-09
select
F1,
TYPE0=sum(case TYPE when 0 then 1 else 0 end),
TYPE1=sum(case TYPE when 1 then 1 else 0 end)
from
表A
group by
F1
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-02-09 05:37
社区公告
暂无公告