一个比较麻烦的问题,哪位能够一个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

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


...全文
166 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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)
--*/
浩方软件HFWMS 2006-02-09
  • 打赏
  • 举报
回复
应该算比较常用而且简单的
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

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧