易截截图软件、单文件、免安装、纯绿色、仅160KB

请问一条sql语句 - MS-SQL Server / 基础类

表如下:

ProduceID Date
1 2010-2-3
1 2010-3-4
1 2010-5-6
1 2010-7-10

我要得到这样的结果

ProduceID Date_1 Date_2
1 2010-2-3 2010-3-4
1 2010-5-6 2010-7-10

也就是ProduceID相同,Date时间相邻的结成一条记录,如果最后一个Date成单了, 刚Date_2为null

请问大家要如何实现呢?
SQL code:
DECLARE @a table(ProduceID INT, Date varchar(20))
insert @a select 1 ,'2010-2-3'
union all select 1 ,'2010-3-4'
union all select 1 ,'2010-5-6'
union all select 1 ,'2010-7-10'
union all select 1 ,'2010-9-10'
union all select 2 ,'2010-10-10'

DECLARE @b table(id INT,ProduceID INT,Date varchar(20))
INSERT @b
SELECT id=(SELECT count(1) from @a WHERE ProduceID=a.produceid AND date<=a.date),
*from @a a

SELECT aa.ProduceID,aa.date Date1,bb.date date2
from (SELECT * from @b WHERE id %2=1) aa
LEFT JOIN
(SELECT * from @b WHERE id %2=0 ) bb
ON aa.ProduceID=bb.ProduceID and aa.id=bb.id-1

--result
/*

ProduceID Date1 date2
----------- -------------------- --------------------
1 2010-2-3 2010-3-4
1 2010-5-6 2010-7-10
1 2010-9-10 NULL
2 2010-10-10 NULL

(所影响的行数为 4 行)

*/


每天一次不懂帮顶学习�


相关问答:

jsp链接sql2000的疑问?



type Exception report


message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jas ......

请教sql语句。 - Oracle / 开发

我有一个表,结构是这样。
  转出 单位 转入单位 笔数 金额
date(主) outid(主) inid(主) num amt
2009 1 2 1 500 为 1 单位 在2009� ......

sql小小的疑问 - .NET技术 / C#

可能因为工作的原因 接触数据库这块比较少,之前都是做程序这块,数据库这块都有专门的人来做 分工都很明细 所以对数据库这一块完全不了解。前段时间 去面试了几家公司 几乎都是在数据库这块挂掉的 连个简单的SQ ......

SQL语句问题 - MS-SQL Server / 疑难问题

请教高手:
 以下是数据库中的三条记录,英文为字段名称  
  id planname TaskBeginTime Status
329 2010年03 ......

sql 问题 - MS-SQL Server / 基础类

需求如下:
学院 academy(aid,aname)
班级 class(cid,cname,aid)
学生 stu(sid,sname,aid,cid)
住宿区 region(rid,rname)
宿舍楼 build(bid,rid,bnote) bnote是‘男’/‘女’
宿舍 dorm(did,rid,bid,bedn ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号