大家帮我看看这样的SQL查询能实现吗?

blacklevin 2005-09-02 06:10:00
表结构和数据如下:
Title1 Title2 Money
收入 .........
费用 水费 50
费用 车费 30
费用 车费 20
费用 电费 80
................

用SQL查询Title1为“费用”要求结果如下:
Moeny 水费 车费 电费
50 50
30 30
20 20
80 80

怎么实现?
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxdjxd1111 2005-09-02
  • 打赏
  • 举报
回复
create table b2(title1 varchar(20),title2 varchar(20),money int)
insert into b2 select '费用','水费' ,50
union all select '费用','车费' ,30
union all select '费用','车费' ,20
union all select '费用','电费' ,20

select money,
水费=(case when title2='水费' then money else 0 end),
车费=(case when title2='车费'then money else 0 end),
电费=(case when title2='电费' then money else 0 end)
from b2
drop table b2
zlp321002 2005-09-02
  • 打赏
  • 举报
回复
--大家都不用动态SQL啊!郁闷....
QQMagicer 2005-09-02
  • 打赏
  • 举报
回复
select [money],
(case title2 when '水费' then [money] else null end) as '水费',
(case title2 when '车费' then [money] else null end) as '车费',
(case title2 when '电费' then [money] else null end) as '电费'
from table1
where Title1='费用'
zlp321002 2005-09-02
  • 打赏
  • 举报
回复
--测试环境
create table t (Title1 varchar(10),Title2 varchar(10),Money int)
insert into T select '收入','A',100
union all select '费用','水费',50
union all select '费用','车费',30
union all select '费用','车费',20
union all select '费用','电费',80

--动态SQL
declare @s varchar(800)
set @s='select Money '
select @s=@s+',['+Title2+']=max(case when Title2='''+Title2+''' then Money else NULL end) '
from T where Title1='费用'
group by Title2
set @s=@s+' from T group by Money'
exec(@s)
--结果

Money 车费 电费 水费
----------- ----------- ----------- -----------
20 20 NULL NULL
30 30 NULL NULL
50 NULL NULL 50
80 NULL 80 NULL
100 NULL NULL NULL

--删除测试环境
drop table T
wgsasd311 2005-09-02
  • 打赏
  • 举报
回复
select [money],
[水费]=(case title2 when '水费' then [money] else 0 end),
[车费]=(case title2 when '车费' then [money] else 0 end),
[电费]=(case title2 when '电费' then [money] else 0 end)
from table1
where Title1='费用'
vivianfdlpw 2005-09-02
  • 打赏
  • 举报
回复
select [money],
[水费]=(case when [Title2]='水费' then [money] else null end),
[车费]=(case when [Title2]='车费' then [money] else null end),
[电费]=(case when [Title2]='电费' then [money] else null end)
from 表

34,575

社区成员

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

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