找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 2366|回复: 0

交叉点为日期型数据的交叉表怎么用SQL语句实现

[复制链接]
发表于 2009-3-8 09:14:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
交叉点为日期型数据的交叉表怎么用SQL语句实现
我的数据为:
单号       审批阶段       日期
001             1             2007-10-01
001             2             2007-10-02
001             3             2007-10-03
002             1             2007-10-04
002             2             2007-10-05
想得到的样子:
单号                 阶段1                 阶段2               阶段3
001           2007-10-01     2007-10-02     2007-10-03
002           2007-10-04     2007-10-05   
交叉点是数字的可以用SUM合计,但日期型的不知道怎么做,请指点,谢谢
1server1  2007-11-3 02:26

此回复于2007-11-16 08:42被 redking 评为最佳答案
/*
那就用max */
--原始数据:#T
create table #T (单号 varchar(10),审批阶段 int,日期 varchar(10)) insert #T
select '001',1,'2007-10-01' union all
select '001',2,'2007-10-02' union all
select '001',3,'2007-10-03' union all
select '002',1,'2007-10-04' union all
select '002',2,'2007-10-05'
--静态
select
  单号,
[阶段1]=max(case 审批阶段 when 1 then 日期 else '' end),
[阶段2]=max(case 审批阶段 when 2 then 日期 else '' end),
[阶段3]=max(case 审批阶段 when 3 then 日期 else '' end)
from #T group by 单号
--动态
declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+'[阶段'+ltrim(审批阶段)+']=max(case 审批阶段 when '+ltrim(审批阶段)+' then 日期 else '''' end)' from #T group by 审批阶段
exec ('select 单号,'+@sql+' from #T group by 单号')
/* 单号 阶段1 阶段2 阶段3
---------- ---------- ---------- ----------
001 2007-10-01 2007-10-02 2007-10-03 002 2007-10-04 2007-10-05
*/
--删除对象 drop table #T
d
wenyixin  2007-11-3 02:26

select   单号,   [1]   as     阶段1,   [2]   as   阶段2,   [3]   as   阶段3   from   T
pivot(   max(日期)   for   审批阶段   in   (1,2,3))   as   P
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-23 02:53 , Processed in 0.049880 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表