请问一条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 行)
*/
每天一次不懂帮顶学习�
相关问答:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jas ......
我有一个表,结构是这样。
转出 单位 转入单位 笔数 金额
date(主) outid(主) inid(主) num amt
2009 1 2 1 500 为 1 单位 在2009� ......
可能因为工作的原因 接触数据库这块比较少,之前都是做程序这块,数据库这块都有专门的人来做 分工都很明细 所以对数据库这一块完全不了解。前段时间 去面试了几家公司 几乎都是在数据库这块挂掉的 连个简单的SQ ......
请教高手:
以下是数据库中的三条记录,英文为字段名称
id planname TaskBeginTime Status
329 2010年03 ......
需求如下:
学院 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 ......