select convert(char(7),日期,120) as convert(char(7),日期,120),(select top 1 期初 from 基表 where convert(char(7),日期,120)=convert(char(7),a.日期,120) order by 日期) as 期初,sum(借发生) as 借发生,sum(贷发生) as 贷发生,(select top 1 期末 from 基表 where convert(char(7),日期,120)=convert(char(7),a.日期,120) order by 日期 desc ) as 期末
from 基表
group by convert(char(7),日期,120)
from 基表
group by convert(char(7),日期,120)
Insert T (日期1, 期初, 借发生, 期末) Select 日期, 期初, 借发生, 期末 From 基表
Update T Set 日期2 = datepart(yyyy, 日期1)+'-'+datepart(mm, 日期1)
update T Set 期初=Min(期初), 日期2 Group by 日期2
update T Set 期初=Max(期末), 日期2 Group by 日期2
Select 期初, sum(借发生) as 借发生, sum(贷发生) as 贷发生, 期末, 日期2
group by 期初, 期末, 日期2
Insert T (日期1, 期初, 借发生, 期末) Select 日期, 期初, 借发生, 期末 From 基表
Update T Set 日期2 = datepart(yyyy, 日期1)+'-'+datepart(mm, 日期1)
update T Set 期初=Min(期初), 日期2 Group by 日期2
update T Set 期初=Max(期末), 日期2 Group by 日期2
Select 期初, sum(借发生) as 借发生, sum(贷发生) as 贷发生, 期末, 日期2
From T group by 期初, 期末, 日期2
insert aa values('2004-07-20',20,30,40,50)
insert aa values('2004-07-21',50,50,20,40)
insert aa values('2004-08-20',20,50,20,40)select 日期=left(rq,7),期初=sum(qc),借发生=sum(jfs),贷发生=sum(dfs),期末=max(qm) from aa
group by left(rq,7)drop table aa-- 结果
日期 期初 借发生 贷发生 期末
---------- ----------- ----------- ----------- -----------
2004-07 70 80 60 50
2004-08 20 50 20 40
你要看清楚楼主的不是全汇总的,有的取最小有的取最大。
create table aaa (id int,rq varchar(10),qc int,jfs int,dfs int,qm int )
insert aaa values(1,'2004-06-01',1000,5000,10000,6000)
insert aaa values(2,'2004-06-02',6000,6000,6000,6000)
insert aaa values(3,'2004-07-01',6000,6000,6000,6000)
insert aaa values(4,'2004-07-06',6000,1000,5000,10000)select 日期=left(rq,7),期初=min(qc),借发生=sum(jfs),贷发生=sum(dfs),期末=max(qm) from aaa
group by left(rq,7)drop table aaa
create table aaa (id int,rq varchar(10),qc int,jfs int,dfs int,qm int )
insert aaa values(1,'2004-06-01',1000,5000,10000,6000)
insert aaa values(2,'2004-06-02',6000,6000,6000,6000)
insert aaa values(3,'2004-07-01',6000,6000,6000,6000)
insert aaa values(4,'2004-07-06',6000,1000,5000,10000)select id=identity(int,1,1),日期=left(rq,7),期初=min(qc),借发生=sum(jfs),贷发生=sum(dfs),期末=max(qm)
into #tb
from aaa
group by left(rq,7)
select * from #tbdrop table aaa,#tb--结果:
id 日期 期初 借发生 贷发生 期末
----------- ---------- ----------- ----------- ----------- -----------
1 2004-06 1000 11000 16000 6000
2 2004-07 6000 7000 11000 10000
sum(期末) as 期末 要改成 max(期末) as 期末
不是第一条和最后一条,应该是最大最小。
你的好像也不太对吧,会提示日期是无效的列。
(select top 1 期初 from 基表 where convert(char(7),日期,120)=convert(char(7),a.日期,120) order by 日期) as 期初,
sum(借发生) as 借发生,
sum(贷发生) as 贷发生,
(select top 1 期末 from 基表 where convert(char(7),日期,120)=convert(char(7),a.日期,120) order by 日期 desc ) as 期末
from 基表
group by convert(char(7),日期,120)
select convert(char(7),日期,120) as 日期,
(select top 1 期初 from 基表 where convert(char(7),日期,120)=convert(char(7),a.日期,120) order by 日期) as 期初,
sum(借发生) as 借发生,
sum(贷发生) as 贷发生,
(select top 1 期末 from 基表 where convert(char(7),日期,120)=convert(char(7),a.日期,120) order by 日期 desc ) as 期末
from 基表 a ----这里定义a
group by convert(char(7),日期,120)