1

特定のグループの人々によってデータを並べ替えようとしています。私のデータは次のようになります:

Origional_Date  ID      FORM    Total
2012-03-01      1855    3       1283
2012-03-01      2869    4       2306
2012-03-01      5555    4       6440
2012-03-01      5555    3       8373
2012-03-01      2527    3       8476
2012-03-01      922     3       823
2012-03-15      2907    4       1420
2012-03-15      5555    3       2892
2012-03-15      2914    4       5008
2012-03-15      2375    3       4594

私がこれまでに持っているクエリは次のとおりです。

DECLARE @StartDate smalldatetime, @EndDate smalldatetime, @Web_ID as smallint
    SET @StartDate = '20120301'
    SET @EndDate = '20120331'
    SET @Web_ID = '5555'

SELECT DATEADD(WEEK, DATEDIFF(WEEK, 0, [Origional_Date]), -1) as [Origional_Date]
  ,[ID]
  ,[Form]
  ,SUM([Total]) as [Total]
  FROM mytable
  WHERE [Origional_Date] between @StartDate and @EndDate
    AND [ID] = @Web_ID
  GROUP BY DATEADD(WEEK, DATEDIFF(WEEK, 0, [Origional_Date]), -1), [ID], [Form]
  ORDER BY [Origional_Date], [Form] ASC

私がやろうとしているのは、次のようなデータを表示することです。

Origional_Date  ID      FORM    Total
2012-03-01      Web     3       8373
2012-03-01      Direct  3       10582
2012-03-01      Web     4       6440
2012-03-01      Direct  4       2306
2012-03-15      WEB     3       2892
2012-03-15      Direct  3       4594
2012-03-15      Direct  4       6428

WebはID5555であり、Directはそれ以外のものです。

これを「IF」ステートメントで実行できるかどうか、または「groupby」で実行する必要があるかどうかはわかりません。

ありがとう!

4

2 に答える 2

1

これを実現するには、caseステートメントを使用できます。

お気に入り

SELECT DATEADD(WEEK, DATEDIFF(WEEK, 0, [Origional_Date]), -1) as [Origional_Date]
  ,(CASE WHEN [ID] = 5555 THEN 'Web' ELSE 'Direct' END )
  ,[Form]
  ,SUM([Total]) as [Total]
  FROM mytable
  WHERE [Origional_Date] between @StartDate and @EndDate
    AND [ID] = @Web_ID
  GROUP BY DATEADD(WEEK, DATEDIFF(WEEK, 0, [Origional_Date]), -1), (CASE WHEN [ID] = 5555 THEN 'Web' ELSE 'Direct' END ), [Form]
  ORDER BY [Origional_Date], [Form] ASC
于 2012-04-30T19:26:32.577 に答える
1

ケース句の使用

select case active
    when 1 then 'Active'
    when 0 then 'Inactive'
    end         
from contract

あなたの場合はこれに似ています:

select case [ID]
    when 5555 then 'Web'
    else 'Direct'
    end as [ID]
from mytable
于 2012-04-30T19:28:36.557 に答える