当前位置: 代码迷 >> Sql Server >> SQL统计语句。
  详细解决方案

SQL统计语句。

热度:96   发布时间:2016-04-24 19:16:18.0
求一个SQL统计语句。。
tb1

id  col1  col2  col3
11  A1    10    克
11  A2    20    克
11  A3    30    克
12  A1    50    克
12  A2    60    克
12  A3    70    斤
13  A3    10    斤

tb2 

id  col1   
11  code1  
12  code2  
13  code3  

tb1.id=tb2.id

需要的结果
------------------------
代码    A1     重量  A2    重量  A3     重量
code1  A1     10克  A2    20克  A3     30克
code2  A1     50克  A2    60克  A3     70斤 
code3  A1     0     A2    0    A3     10斤 

------解决方案--------------------
--drop table tb1,tb2
--go

create table tb1(id  int,col1 varchar(10), col2 int, col3 varchar(10))

insert into tb1
select 11  ,'A1',    10    ,'克' union all
select 11  ,'A2',    20    ,'克' union all
select 11  ,'A3',    30    ,'克' union all
select 12  ,'A1',    50    ,'克' union all
select 12  ,'A2',    60    ,'克' union all
select 12  ,'A3',    70    ,'斤' union all
select 13  ,'A3',    10    ,'斤'

create table tb2 (id  int, col1 varchar(10))

insert into tb2   
select 11  ,'code1' union all  
select 12  ,'code2' union all  
select 13  ,'code3'
go  

declare @sql varchar(1000)

set @sql = ''


select @sql = @sql + 
              ',max(case when tb1.col1 = '''+tb1.col1+
              ''' then tb1.col1 else ''0'' end) as ['+tb1.col1+']' +
              ',max(case when tb1.col1 = '''+tb1.col1+
              ''' then cast(tb1.col2 as varchar)+tb1.col3 else ''0'' end) as [重量]'
from tb1
inner join tb2 
        on tb1.id = tb2.id
group by tb1.col1
 
select @sql = 'select tb2.col1' + @sql+
              'from tb1
   inner join tb2 
       on tb1.id = tb2.id
               group by tb2.col1
              '   

exec(@sql)
/*
col1 A1 重量 A2 重量 A3 重量
code1 A1 10克 A2 20克 A3 30克
code2 A1 50克 A2 60克 A3 70斤
code3 0 0 0 0 A3 10斤
*/
    

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

create table tb_test1
(id int,
 col1 nvarchar(255),
 col2 nvarchar(255),
 col3 nvarchar(255)
)
go
insert into tb_test1
select 11,'A1','10',N'克' union all
select 11,'A2','20',N'克' union all
select 11,'A3','30',N'克' union all
select 12,'A1','50',N'克' union all
select 12,'A2','60',N'克' union all
  相关解决方案