表a:
证券代码 日期 股票组合
600002 2006-4-1 上海量比
600002 2006-4-2 上海量比
600002 2006-4-3 上海量比
600002 2006-4-4 上海强势
600002 2006-4-5 上海量比
600002 2006-4-6 上海强势
600022 2006-4-1 上海量比
600022 2006-4-3 上海强势
600022 2006-4-5 上海强势
600022 2006-4-7 上海强势
600022 2006-4-9 上海量比
600022 2006-4-11 上海强势
要求:每日都对量比在规定的时间段(从2006-04-01到2006-04-11)之内出现的次数进行统计
结果如下表b:
证券代码 日期 股票组合 上海量比组合累计次数
600002 2006-4-1 上海量比
600002 2006-4-2 上海量比
600002 2006-4-3 上海量比
600002 2006-4-4 上海强势 3
600002 2006-4-5 上海量比
600002 2006-4-6 上海强势 4
总计 600002 4
600022 2006-4-1 上海量比
600022 2006-4-3 上海强势 1
600022 2006-4-5 上海强势 1
600022 2006-4-7 上海强势 1
600022 2006-4-9 上海量比
600022 2006-4-11 上海强势 2
总计 600022 2
证券代码 日期 股票组合
600002 2006-4-1 上海量比
600002 2006-4-2 上海量比
600002 2006-4-3 上海量比
600002 2006-4-4 上海强势
600002 2006-4-5 上海量比
600002 2006-4-6 上海强势
600022 2006-4-1 上海量比
600022 2006-4-3 上海强势
600022 2006-4-5 上海强势
600022 2006-4-7 上海强势
600022 2006-4-9 上海量比
600022 2006-4-11 上海强势
要求:每日都对量比在规定的时间段(从2006-04-01到2006-04-11)之内出现的次数进行统计
结果如下表b:
证券代码 日期 股票组合 上海量比组合累计次数
600002 2006-4-1 上海量比
600002 2006-4-2 上海量比
600002 2006-4-3 上海量比
600002 2006-4-4 上海强势 3
600002 2006-4-5 上海量比
600002 2006-4-6 上海强势 4
总计 600002 4
600022 2006-4-1 上海量比
600022 2006-4-3 上海强势 1
600022 2006-4-5 上海强势 1
600022 2006-4-7 上海强势 1
600022 2006-4-9 上海量比
600022 2006-4-11 上海强势 2
总计 600022 2
你究意是想:
1>根据表A,来得到 结果表B,C?
2>还是?
Create Table A
(证券代码 Char(6),
日期 Varchar(10),
股票组合 Nvarchar(10))
Insert A Select '600002', '2006-4-1', N'上海量比'
Union All Select '600002', '2006-4-2', N'上海量比'
Union All Select '600002', '2006-4-3', N'上海量比'
Union All Select '600002', '2006-4-4', N'上海强势'
Union All Select '600002', '2006-4-5', N'上海量比'
Union All Select '600002', '2006-4-6', N'上海强势'
Union All Select '600022', '2006-4-1', N'上海量比'
Union All Select '600022', '2006-4-3', N'上海强势'
Union All Select '600022', '2006-4-5', N'上海强势'
Union All Select '600022', '2006-4-7', N'上海强势'
Union All Select '600022', '2006-4-9', N'上海量比'
Union All Select '600022', '2006-4-11', N'上海强势'
GO
--1.
Select
*,
(Case 股票组合 When N'上海强势' Then (Select Count(*) From A Where 股票组合=N'上海量比' And Cast(日期 As DateTime)<=Cast(B.日期 As DateTime) And 证券代码=B.证券代码 ) End) As 上海量比组合累计次数
From A B
Where Cast(日期 As DateTime) Between '2006-04-01' And '2006-04-11'
Union
Select
证券代码+N'总计' ,
'',
证券代码,
Count(*) From A
Where Cast(日期 As DateTime) Between '2006-04-01' And '2006-04-11' And 股票组合=N'上海量比'
Group By 证券代码--2.
Select
证券代码,
'2006-04-01' As 日期1,
'2006-04-11' As 日期2,
N'上海强势' As 股票组合,
Count(*) As 上海量比组合累计次数
From A
Where Cast(日期 As DateTime) Between '2006-04-01' And '2006-04-11' And 股票组合=N'上海量比'
Group By 证券代码
GO
Drop Table A
--Result
/*
--1.
证券代码 日期 股票组合 上海量比组合累计次数
600002 2006-4-1 上海量比 NULL
600002 2006-4-2 上海量比 NULL
600002 2006-4-3 上海量比 NULL
600002 2006-4-4 上海强势 3
600002 2006-4-5 上海量比 NULL
600002 2006-4-6 上海强势 4
600002总计 600002 4
600022 2006-4-1 上海量比 NULL
600022 2006-4-11上海强势 2
600022 2006-4-3 上海强势 1
600022 2006-4-5 上海强势 1
600022 2006-4-7 上海强势 1
600022 2006-4-9 上海量比 NULL
600022总计 600022 2--2.
证券代码 日期1 日期2 股票组合 上海量比组合累计次数
600002 2006-04-01 2006-04-11 上海强势 4
600022 2006-04-01 2006-04-11 上海强势 2
*/
(证券代码 int,
日期 datetime,
股票组合 char(10)
)insert @t
select 600002, '2006-04-01', '上海量比'union all
select
600002, '2006-04-02', '上海量比'union all
select
600002, '2006-04-03', '上海量比'union all
select
600002, '2006-04-04', '上海强势'union all
select
600002, '2006-04-05', '上海量比'union all
select
600002, '2006-04-06', '上海强势'union all
select
600022, '2006-04-01', '上海量比'union all
select
600022, '2006-04-03', '上海强势'union all
select
600022, '2006-04-05', '上海强势'union all
select
600022, '2006-04-07', '上海强势'union all
select
600022, '2006-04-09', '上海量比'union all
select
600022, '2006-04-11', '上海强势'select a.*,b.上海量比组合累计次数
from
(
select 证券代码,
(select top 1 日期 from @t order by 日期)as 日期1,
(select top 1 日期 from @t order by 日期 desc)as 日期2 ,
(select '上海强势')as 股票组合
from @t
group by 证券代码
)a
full outer join
(
select 证券代码,count(1) as 上海量比组合累计次数 from @t where 股票组合='上海量比' group by 股票组合,证券代码 )b
on a. 证券代码 = b.证券代码
select '600002', '2006-4-1', '上海量比' union all
select '600002', '2006-4-2', '上海量比' union all
select '600002', '2006-4-3', '上海量比' union all
select '600002', '2006-4-4', '上海强势' union all
select '600002', '2006-4-5', '上海量比' union all
select '600002', '2006-4-6', '上海强势' union all
select '600022', '2006-4-1', '上海量比' union all
select '600022', '2006-4-3', '上海强势' union all
select '600022', '2006-4-5', '上海强势' union all
select '600022', '2006-4-7', '上海强势' union all
select '600022', '2006-4-9', '上海量比' union all
select '600022', '2006-4-11', '上海强势'
select * from
(select a.*,
上海量比组合累计次数=(select count(*) from @b b where b.证券代码 =a.证券代码 and b.日期<a.日期 and a.股票组合='上海强势' and b.股票组合='上海量比')
from @b a
union all
select '总计','',证券代码,count(股票组合)
from @b where 股票组合='上海量比'
group by 证券代码) a
order by (case when 证券代码='总计' then 股票组合 else 证券代码 end ),日期 desc