行列转换,郁闷!

wangfeng0215 2004-09-09 09:28:43
Create table kl_zh (s_dwjc int,s_zhlbmc char(50))
go
insert kl_zh values(3,'基本存款账户')
insert kl_zh values(3,'账户二')
insert kl_zh values(2,'账户一')
insert kl_zh values(2,'基本存款账户')

我想得到:
s_dwjc 基本存款账户 账户二 账户一
2 1 1
3 1 1
求其s_zhlbmc 的个数
急!!
...全文
236 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
pingfzp 2004-09-16
  • 打赏
  • 举报
回复
GOOD!
Learning.....................
zjcxc 元老 2004-09-09
  • 打赏
  • 举报
回复
set nocount on --加上这句,你就可以把这个当成一个sql,用recordset对象打开
declare @s varchar(8000)
set @s=''
select @s=@s+',['+s_zhlbmc+']=sum(case s_zhlbmc when '''+s_zhlbmc+''' then 1 else 0 end)'
from kl_zh group by s_zhlbmc
exec('
select s_dwjc'+@s+'
from kl_zh
group by s_dwjc')
chinaandys 2004-09-09
  • 打赏
  • 举报
回复
这么多答案:还不 mark
qq3080 2004-09-09
  • 打赏
  • 举报
回复

select s_dwjc,sum(case s_zhlbmc when '基本存款账户' then 1 else 0 end) as 基本存款账户' sum( case s_zhlbmc when '二' then 1 else 0 end) as 二,sum(case s_zhlbmc when '一' then 1 else 0 end) as 一
from kl_zh
group by s_dwjc
qq3080 2004-09-09
  • 打赏
  • 举报
回复
select s_dwjc , case s_zhlbmc when '基本存款' then (select count(s_zhlbmc) from kl_zh where s_zhlbmc= '基本存款' ) end as 基本存款,
case s_zhlbmc when '二' then (select count(s_zhlbmc) from kl_zh where s_zhlbmc= '二') end as 二,
case s_zhlbmc when '一' then (select count(s_zhlbmc) from kl_zh where s_zhlbmc= '一') end as 一
from kl_zh
sky125 2004-09-09
  • 打赏
  • 举报
回复
mark
wangfeng0215 2004-09-09
  • 打赏
  • 举报
回复
再问一下:
动态SQL是不是只能放到存储过程中
bqb 2004-09-09
  • 打赏
  • 举报
回复
Create table test (name char(10),km char(10),cj int)
go
insert test values('张三','语文',80)
insert test values('张三','数学',86)
insert test values('张三','英语',75)
insert test values('李四','语文',78)
insert test values('李四','数学',85)
insert test values('李四','英语',78)

想变成

姓名 语文 数学 英语
张三 80 86 75
李四 78 85 78


declare @sql varchar(8000)
set @sql = 'select name'
select @sql = @sql + ',sum(case km when '''+km+''' then cj end) ['+km+']'
from (select distinct km from test) as a
select @sql = @sql+' from test group by name'
exec(@sql)

drop table test
st_2000 2004-09-09
  • 打赏
  • 举报
回复
在水源找不到邹建!
pbsql 2004-09-09
  • 打赏
  • 举报
回复
这样的问题天天提,天天写,搜一下吧(“横”)
zjcxc 元老 2004-09-09
  • 打赏
  • 举报
回复
--如果 s_zhlbmc 不固定
declare @s varchar(8000)
set @s=''
select @s=@s+',['+s_zhlbmc+']=sum(case s_zhlbmc when '''+s_zhlbmc+''' then 1 else 0 end)'
from kl_zh group by s_zhlbmc
exec('
select s_dwjc'+@s+'
from kl_zh
group by s_dwjc')
wangfeng0215 2004-09-09
  • 打赏
  • 举报
回复
请教zjcxc(邹建) :
zhlbmc 是动态的如何写
liuxiang_csdn 2004-09-09
  • 打赏
  • 举报
回复
如果确定只有三种帐户的话,用楼上的,否则需用动态SQL了。
zjcxc 元老 2004-09-09
  • 打赏
  • 举报
回复
select s_dwjc
,[基本存款账户]=sum(case s_zhlbmc when '基本存款账户' then 1 else 0 end)
,[账户二]=sum(case s_zhlbmc when '账户二' then 1 else 0 end)
,[账户一]=sum(case s_zhlbmc when '账户一' then 1 else 0 end)
from kl_zh
group by s_dwjc

34,590

社区成员

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

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