表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

解决方案 »

  1.   

    LZ你的意思真是好难看得明白...
    你究意是想:
    1>根据表A,来得到 结果表B,C?
    2>还是?
      

  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
    */
      

  3.   

    declare @t table 
    (证券代码 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.证券代码
      

  4.   

    declare @b table(证券代码 varchar(10),日期 varchar(10),股票组合 varchar(10))insert into @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