日期:2014-05-19  浏览次数:20452 次

SQl 語句
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  


------解决方案--------------------

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

------解决方案--------------------
--如果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)
------解决方案--------------------
select
A,
1 = case when C = 1 then B else 0 end,
2 = case when C = 2 then B else 0 end
from Table
------解决方案--------------------
呵呵,我的有问题。看来高手就是高手。
这个我收藏了。
--如果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)

------解决方案--------------------
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
------解决方案--------------------

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],