首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

争复杂的存储过程或SQL语句,高手帮忙

2012-01-08 
争求一个复杂的存储过程或SQL语句,高手帮忙啊flighteffectdatesubclass---------------------------------

争求一个复杂的存储过程或SQL语句,高手帮忙啊
flight     effectdate                                                                                           subclass  
-------   ------------------------------------------------------   --------  
va1235     2007-04-18   00:00:00.000                                                                 a
va1235     2007-04-18   00:00:00.000                                                                 d
va1235     2007-04-18   00:00:00.000                                                                 f
va1235     2007-04-18   00:00:00.000                                                                 e
va1235     2007-04-18   00:00:00.000                                                                 v
va1235     2007-04-19   00:00:00.000                                                                 c
va1235     2007-04-19   00:00:00.000                                                                 d
va1235     2007-04-19   00:00:00.000                                                                 f
.......
对同一flight进行按日期的归并,如下

转成
flight     effectdate     a         d     f     e         v         c
va1235     2007-4-18       T         T     T     T         T         NULL
va1235     2007-4-19       null   T     T     null   null   T
.....


[解决办法]
需要通过临时表实现
[解决办法]
subclass固定的话可以这样写

select flight,
effectdate,
max(case when subclass= 'a ' then 'T ' end) as a,
max(case when subclass= 'd ' then 'T ' end) as d,


max(case when subclass= 'f ' then 'T ' end) as f,
max(case when subclass= 'e ' then 'T ' end) as e,
max(case when subclass= 'v ' then 'T ' end) as v,
max(case when subclass= 'c ' then 'T ' end) as c
from tbtest
group by flight,effectdate
[解决办法]
Declare @S Varchar(8000)
Select @S = 'Select flight, Convert(Varcahr(10), effectdate, 120) As effectdate '
Select @S = @S + ', Max(Case subclass When ' ' ' + subclass + ' ' ' Then T Else Null End) As [ ' + subclass + '] ' From TableName Group By subclass
Select @S = @S+ ' From TableName Group By flight, Convert(Varcahr(10), effectdate, 120) '
EXEC(@S)
[解决办法]
第一个是根据同一天记录排序
[解决办法]
好多人啊,看来我是抢不到了:)
[解决办法]
太强了,高手如云啊。
学习了
[解决办法]
FDS

热点排行
Bad Request.