Table tblTest
(CityDis 不固定)
TypeName CityDis Unit Result
A 北京 1000元 1245
A 上海 10000元 548
B 北京 1000元 2134
B 上海 10000元 5412
.. ... ..... .... 想得到以下结果 TypeName 北京 上海
A 1245(1000元) 548(10000元)
B 2134(1000元) 5412(10000元)
拜托各位了.
(CityDis 不固定)
TypeName CityDis Unit Result
A 北京 1000元 1245
A 上海 10000元 548
B 北京 1000元 2134
B 上海 10000元 5412
.. ... ..... .... 想得到以下结果 TypeName 北京 上海
A 1245(1000元) 548(10000元)
B 2134(1000元) 5412(10000元)
拜托各位了.
解决方案 »
- 两个表数据动态连接查询问题
- SQL2000 里支持位与或操作么?
- sql2000导出资料表到txt,运行以下T-sql就死机
- 如何在CMD下用osql执行一个*.sql来创建一个数据库?急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!谢谢!
- SQL病毒
- 当安装SQL server 2005 时,总是出现"0x7813ff16"指令引用的"ox00000641"内存。该内存不能为"read". 好郁闷啊!
- 数据库中字符串分解问题
- 怎样删除数据库中的多余的重复纪录?急
- 如何将SQLSERVER上的数据插入到ORACLE上?
- 补充字符串问题
- where条件中出现between and 子句就不能用其他条件了吗
- 简单的SQL查错:目的是让[考核名称]字段的某一个指定名称始终显示在第一位.
if exists (select * from dbo.sysobjects where id = object_id(N'[tb]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [tb]
GOcreate table tb(单位名称 varchar(10),日期 datetime,销售额 int)
insert into tb
select 'A单位','2001-01-01',100
union all select 'B单位','2001-01-02',101
union all select 'C单位','2001-01-03',102
union all select 'D单位','2001-01-04',103
union all select 'E单位','2001-01-05',104
union all select 'F单位','2001-01-06',105
union all select 'G单位','2001-01-07',106
union all select 'H单位','2001-01-08',107
union all select 'I单位','2001-01-09',108
union all select 'J单位','2001-01-11',109/*-- 要求结果
日期 A单位 B单位 C单位 D单位 E单位 F单位 G单位 H单位 I单位 J单位
---------- ----- ----- ----- ----- ----- ----- ---- ---- ---- ------
2001-01-01 100 0 0 0 0 0 0 0 0 0
2001-01-02 0 101 0 0 0 0 0 0 0 0
2001-01-03 0 0 102 0 0 0 0 0 0 0
2001-01-04 0 0 0 103 0 0 0 0 0 0
2001-01-05 0 0 0 0 104 0 0 0 0 0
2001-01-06 0 0 0 0 0 105 0 0 0 0
2001-01-07 0 0 0 0 0 0 106 0 0 0
2001-01-08 0 0 0 0 0 0 0 107 0 0
2001-01-09 0 0 0 0 0 0 0 0 108 0
2001-01-11 0 0 0 0 0 0 0 0 0 109
--*//*-- 常规处理方法*/
declare @sql varchar(8000)
set @sql='select 日期=convert(varchar(10),日期,120)'
select @sql=@sql+',['+单位名称
+']=sum(case 单位名称 when '''+单位名称+''' then 销售额 else 0 end)'
from(select distinct 单位名称 from tb) a
exec(@sql+' from tb group by convert(varchar(10),日期,120)')
最好是能先将Result格式化为 2,134.00 再加上Unit. 即: 2,134.00(1000元)
set @sql = 'select TypeName'
select @sql = @sql + ',SUM(case CityDis when ''' + AA.CityDis +''' then result else 0 end) as ''' + CityDis+''''
from (select distinct CityDis from tblTest) as AA
set @sql = @sql + ' from tblTest group by TypeName'
print @sql
exec(@sql)
好像不行啊,我想要把Result和Unit 连在一起显示.
from tablename就是说可以先把这两列合并成一列格式这块比较麻烦
--好像只能加在SUM里面,否则又没法对应了,这个数据是属于北京...城市这些字段的.
--但是加在这里它又必须在Group By 里,这样以来又有重复数据(因为每个城市的Unit不一致)
select @sql = @sql + ',SUM(case CityDis when ''' + AA.CityDis +''' then result else 0 end) as ''' + CityDis+''''
from (select distinct CityDis from tblTest) as AA
set @sql = @sql + ' from tblTest group by TypeName'coolingpipe(冷箫轻笛)
能否再帮帮忙啊,格式化先不管了.
drop table tb
gocreate table tb
(
TypeName varchar(10),
CityDis varchar(10),
Unit varchar(10),
Result int
)insert into tb(TypeName,CityDis,Unit,Result) values('A','北京','1000元' ,'1245')
insert into tb(TypeName,CityDis,Unit,Result) values('A','上海','10000元','548')
insert into tb(TypeName,CityDis,Unit,Result) values('B','北京','1000元' ,'2134')
insert into tb(TypeName,CityDis,Unit,Result) values('B','上海','10000元','5412')declare @sql varchar(8000)
set @sql = 'select TypeName'
select @sql = @sql + ' , max(case citydis when ''' + citydis + ''' then cast(Result as varchar) + ''(''+ unit + '')'' end) [' + citydis + ']'
from (select distinct citydis from tb) as a
set @sql = @sql + ' from tb group by typename'
exec(@sql) drop table tb/*result
TypeName 北京 上海
---------- ------------- -------------
A 1245(1000元) 548(10000元)
B 2134(1000元) 5412(10000元)
*/