首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

求一SQL语句写法解决方案

2012-02-07 
求一SQL语句写法数据库中的数据如下:IDdatesummary00000012010-01-01早班00000012010-01-01晚班0000001201

求一SQL语句写法
数据库中的数据如下:
ID date summary
0000001 2010-01-01 早班
0000001 2010-01-01 晚班
0000001 2010-01-01 夜班

想用SQl语句查处数据 如下所示:
ID date summary1 summary2 summary3
0000001 2010-01-01 早班 晚班 夜班

请问如何写此语句?



[解决办法]
mark 

回复内容太短了!
[解决办法]
select id,date,
case summary 
when ‘早班’then summarey1,
when
when
from 表
group by id,date
[解决办法]
不预先确定,无法用sql语句写出,用交叉数据窗口
[解决办法]
动态的,只能通过后台存储过程实现,静态的可以用decode或者case来实现
[解决办法]
内容不确定,一条语句就不够了,的写存储过程,或者用交叉表
[解决办法]
涉及到行列互换的显示,要么自己在程序里转换,也可以使用pb数据窗口中最后一类,交叉表类型的数据窗口来显示 。
[解决办法]

SQL code
--测试数据if exists(select * from sysobjects where name = 't' and type = 'U')drop table tcreate table t(id varchar(10), date datetime, summary varchar(10))insert tselect '0000001',    '2010-01-01',    '早班' union allselect '0000001',    '2010-01-01',    '晚班' union allselect '0000001',    '2010-01-01',    '夜班' --查询set nocount onselect distinct summary into #1 from tselect count(1) xh, a.summary into #2 from #1 a join #1 b on a.summary >= b.summarygroup by a.summarydeclare @sql varchar(8000)set @sql = 'select id, date'select @sql = @sql + ', max(case summary when ''' + summary + ''' then summary else null end) [summary' + convert(char(2), xh) + ']'  from #2set @sql = @sql + ' FROM t group by id, date'exec(@sql)drop table #1drop table #2drop table tset nocount off/*id         date                    summary1   summary2   summary3 ---------- ----------------------- ---------- ---------- ----------0000001    2010-01-01 00:00:00.000 晚班         夜班         早班*/
[解决办法]
最好用交叉报表来实现,比较简单点。
[解决办法]
summary不确定,是不是说还要动态显示列。。

热点排行