在线等待一条sql语句

xingbozy 2007-07-26 10:02:32
现在表:tbl
字段: 客户号cardno 交易类型jylx
数据为:
1001 1
1001 2
需求:同一个客户发生的交易类型不同,现对客户交易单的个数进行统计.
要求结果:
   客户号 交易类型1   交易类型2
1001 1 1

本人目前实现的方法:
select cardno,count(case jylx when '1' then jylx end) as jylx_one,count(case jylx when '2' then jylx end) as jylx_two from tbl group by 1

但实的结果为:
   客户号 交易类型1   交易类型2
1001 1
1001 1


我现在想用一条sql语句实现,请求帮助!!多谢!
...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2007-07-26
  • 打赏
  • 举报
回复
create table tbl(cardno varchar(10),jylx char(1))
insert into tbl values('1001', '1')
insert into tbl values('1001', '2')
go

declare @sql varchar(8000)
set @sql = 'select cardno'
select @sql = @sql + ' , sum(case jylx when ''' + jylx + ''' then 1 else 0 end) [交易类型' + jylx + ']'
from (select distinct jylx from tbl) as a
set @sql = @sql + ' from tbl group by cardno'
exec(@sql)

drop table tbl

/*
cardno 交易类型1 交易类型2
---------- ----------- -----------
1001 1 1
*/
谁是谁的谁 2007-07-26
  • 打赏
  • 举报
回复
这年头,想挣点分咋就那么滴难呢...
huyouni 2007-07-26
  • 打赏
  • 举报
回复
--创建测试数据
create table tbl(cardno varchar(10),jylx char(1))
insert into tbl
select '1001','1'
union all select '1001','2'

--查询
select cardno,
sum(case when jylx='1' then 1 else 0 end) as jylx_one,
sum(case when jylx='2' then 1 else 0 end) as jylx_two
from tbl
group by cardno

--结果
/*
cardno jylx_one jylx_two
---------- ----------- -----------
1001 1 1

(所影响的行数为 1 行)
*/
谁是谁的谁 2007-07-26
  • 打赏
  • 举报
回复
数据太少了吧!
谁是谁的谁 2007-07-26
  • 打赏
  • 举报
回复
赫赫,抢个SF看看..
echiynn 2007-07-26
  • 打赏
  • 举报
回复
group by 1
改為
group by cardno

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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