解决方案 »

  1.   

    是的,随数据中月份值变化。可以取为preSelectedMonth-f, preSelectedMonth-m,preSelected-l,及SelectedMonth-f,SlectedMonth-m,SelectedMonth-l 
      

  2.   

    是的,随数据中月份值变化。可以取为preSelectedMonth-f, preSelectedMonth-m,preSelected-l,及SelectedMonth-f,SlectedMonth-m,SelectedMonth-l 
    我只需要所选月份及前一个月的数据。
    sql server 2008。
      

  3.   

    DECLARE @MONTH DATETIME
    SET @MONTH='2014-07-01'
    SELECT ID,Name
    ,CASE WHEN MONTH(DATEADD(MONTH,1,Date1))=MONTH(@MONTH)AND DATEPART(DAY,Date1)<=10 THEN Total1 END [preSelectedMonth-f-Total1]
    ,CASE WHEN MONTH(DATEADD(MONTH,1,Date1))=MONTH(@MONTH)AND DATEPART(DAY,Date1)<=10 THEN Total2 END [preSelectedMonth-f-Total2]
    ,CASE WHEN MONTH(DATEADD(MONTH,1,Date1))=MONTH(@MONTH)AND DATEPART(DAY,Date1)<=20 AND DATEPART(DAY,Date1)>10 THEN Total1 END [preSelectedMonth-m-Total1]
    ,CASE WHEN MONTH(DATEADD(MONTH,1,Date1))=MONTH(@MONTH)AND DATEPART(DAY,Date1)<=20 AND DATEPART(DAY,Date1)>10 THEN Total2 END [preSelectedMonth-m-Total2]
    ,CASE WHEN MONTH(DATEADD(MONTH,1,Date1))=MONTH(@MONTH)AND DATEPART(DAY,Date1)>20 THEN Total1 END [preSelectedMonth-l-Total1]
    ,CASE WHEN MONTH(DATEADD(MONTH,1,Date1))=MONTH(@MONTH)AND DATEPART(DAY,Date1)>20 THEN Total2 END [preSelectedMonth-l-Total2]
    ,CASE WHEN MONTH(Date1)=MONTH(@MONTH)AND DATEPART(DAY,Date1)<=10 THEN Total1 END [SelectedMonth-f-Total1]
    ,CASE WHEN MONTH(Date1)=MONTH(@MONTH)AND DATEPART(DAY,Date1)<=10 THEN Total2 END [SelectedMonth-f-Total2]
    ,CASE WHEN MONTH(Date1)=MONTH(@MONTH)AND DATEPART(DAY,Date1)<=20 AND DATEPART(DAY,Date1)>10 THEN Total1 END [SelectedMonth-m-Total1]
    ,CASE WHEN MONTH(Date1)=MONTH(@MONTH)AND DATEPART(DAY,Date1)<=20 AND DATEPART(DAY,Date1)>10 THEN Total2 END [SelectedMonth-m-Total2]
    ,CASE WHEN MONTH(Date1)=MONTH(@MONTH)AND DATEPART(DAY,Date1)>20 THEN Total1 END [SelectedMonth-l-Total1]
    ,CASE WHEN MONTH(Date1)=MONTH(@MONTH)AND DATEPART(DAY,Date1)>20 THEN Total2 END [SelectedMonth-l-Total2]
    FROM TB感觉只能这样了
      

  4.   

    use tempdb
    create table test(id int,[name] varchar(30),total1 decimal(18,6),total2 decimal(18,6),date1 smalldatetime)
    insert into test
    select 1, 'Name1', 8.981132,   476 ,'6/15/2014' union all
    select 1, 'Name2', 9      ,    18 ,'7/9/2014'  union all
    select 1, 'Name3', 14.589062, 1203.16 ,'7/25/2014' union all
    select 1, 'Name4', 30.750759, 2023.4 ,'7/11/2014' union all
    select 2, 'Name1', 7       ,  7     ,'6/13/2014' union all
    select 2, 'Name2', 13.491984, 5714.8 ,'7/22/2014' union all
    select 2, 'Name2', 26.976811, 5921.68 ,'7/18/2014' declare @sql varchar(max)
    select @sql=isnull(@sql+',','')+' sum(case when day(date1) between 1 and 10 then total1 else 0 end)  as ['+ cast(month(date1) as varchar)+'-上旬-total1],'+char(10)+
    ' sum(case when day(date1)>10 and day(date1)<=20 then total1 else 0 end ) as ['+ cast(month(date1) as varchar)+'-中旬-total1],'+char(10)+
    ' sum(case when day(date1)>20 then total1 else 0 end)  as [' +cast(month(date1) as varchar)+'-下旬-total1],'+char(10)+
    ' sum(case when day(date1) between 1 and 10 then total2 else 0 end)  as ['+ cast(month(date1) as varchar)+'-上旬-total2],'+char(10)+
    ' sum(case when day(date1)>10 and day(date1)<=20 then total2 else 0 end ) as ['+ cast(month(date1) as varchar)+'-中旬-total2],'+char(10)+
    ' sum(case when day(date1)>20 then total2 else 0 end ) as ['+ cast(month(date1) as varchar)+'下旬-total2]'
    from test group by month(date1)set @sql='select id,[name],'+@sql
    +'from test group by id,name,convert(varchar(6),date1,112)'
    --print @sql
    exec(@sql) 
      

  5.   

    Quote: 引用 6 楼 tangguangqiang 的回复:

    quote]
    怎么给不分给你,只能给一个人?