部门 日期 使用金额
a部门 2014-1-2 991
a部门 2014-1-7 192
a部门 2014-1-29 953
b部门 2014-1-3 116
b部门 2014-1-22 917
b部门 2014-1-25 558
要求查询出结果
部门 开始时间 金额 结束时间 金额
a部门 2014-1-2 991 2014-1-29 953
b部门 2014-1-3 116 2014-1-25 558
求教这么该怎么写SQL
------解决方案--------------------
----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2014-02-20 08:48:45
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([部门] varchar(5),[日期] datetime,[使用金额] int)
insert [huang]
select 'a部门','2014-1-2',991 union all
select 'a部门','2014-1-7',192 union all
select 'a部门','2014-1-29',953 union all
select 'b部门','2014-1-3',116 union all
select 'b部门','2014-1-22',917 union all
select 'b部门','2014-1-25',558
--------------开始查询--------------------------
SELECT a.部门,a.日期1 起始日期,b.使用金额 ,a.日期2 结束日期 ,c.使用金额
FROM (
select [部门],MIN([日期])[日期1],MAX([日期])[日期2]
from [huang]
GROUP BY [部门])a LEFT JOIN huang b on a.部门=b.部门 AND a.日期1=b.日期
left JOIN huang c on a.部门=c.部门 AND a.日期2=c.日期
----------------结果----------------------------
/*
部门 起始日期 使用金额 结束日期 使用金额
----- ----------------------- ----------- ----------------------- -----------
a部门 2014-01-02 00:00:00.000 991 2014-01-29 00:00:00.000 953
b部门 2014-01-03 00:00:00.000 116 2014-01-25 00:00:00.000 558
*/