SQl 語句

yifan1008 2007-06-13 02:59:48
A B C 字段
S1 30 1
S1 20 2
S2 30 1
S3 50 2

要得到查詢的結果是

A 1 2 字段
S1 30 20
S2 30 0
S3 0 50
...全文
334 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2007-07-27
  • 打赏
  • 举报
回复
...
xiaqilin 2007-06-14
  • 打赏
  • 举报
回复
值得学习学习
ojuju10 2007-06-13
  • 打赏
  • 举报
回复

create table tbl
(
A varchar(10),
B varchar(10),
C varchar(10)
)

insert into tbl
select
'S1' , '30' , '1' union all select
'S1' , '20', '2' union all select
'S2' , '30' , '1' union all select
'S3' , '50' , '2'

--静态的
select a ,
max(case when c='1' then b else 0 end) as [1],
max(case when c='2' then b else 0 end) as [2]
from tbl group by a


--动态的
declare @i varchar(1000)
set @i='select a '
select @i=@i+',max(case when c='''+RTRIM(c)+''' then b else 0 end) as '+quotename(c)
from (select distinct c from tbl ) aa
set @i=@i+' from tbl group by a'
exec(@i)
ice241018 2007-06-13
  • 打赏
  • 举报
回复
学习
Linux_9 2007-06-13
  • 打赏
  • 举报
回复
呵呵,高手都来回答这样的问题得分,我问的问题都没有人光顾。
fwacky 2007-06-13
  • 打赏
  • 举报
回复
create table yifan1008
(
A varchar(10),
B varchar(10),
C varchar(10)
)

insert into yifan1008
select
'S1' , '30' , '1' union all select
'S1' , '20', '2' union all select
'S2' , '30' , '1' union all select
'S3' , '50' , '2'

select A ,
max( case C when '1' then B else '0' end) as '1',
max( case C when '2' then B else '0' end) as '2'
from yifan1008 group by A


A 1 2 字段
S1 30 20
S2 30 0
S3 0 50
Linux_9 2007-06-13
  • 打赏
  • 举报
回复
呵呵,我的有问题。看来高手就是高手。
这个我收藏了。
--如果C是不固定的
Declare @S Varchar(8000)
Select @S = 'Select A '
Select @S = @S + ' , SUM(Case C When ' + Cast(C As Varchar) + ' Then B Else 0 End) As [' + Cast(C As Varchar) + ']'
From TableName Group By C
Select @S = @S + ' From TableName Group By A'
EXEC(@S)
Linux_9 2007-06-13
  • 打赏
  • 举报
回复
select
A,
1 = case when C = 1 then B else 0 end,
2 = case when C = 2 then B else 0 end
from Table
paoluo 2007-06-13
  • 打赏
  • 举报
回复
--如果C是固定的
Select
A,
SUM(Case C When 1 Then B Else 0 End) As [1],
SUM(Case C When 2 Then B Else 0 End) As [2]
From
TableName
Group By
A

--如果C是不固定的
Declare @S Varchar(8000)
Select @S = 'Select A '
Select @S = @S + ' , SUM(Case C When ' + Cast(C As Varchar) + ' Then B Else 0 End) As [' + Cast(C As Varchar) + ']'
From TableName Group By C
Select @S = @S + ' From TableName Group By A'
EXEC(@S)
子陌红尘 2007-06-13
  • 打赏
  • 举报
回复

select
A,
[1]=sum(case C when 1 then B else 0 end),
[2]=sum(case C when 2 then B else 0 end)
from

group by
A

34,594

社区成员

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

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