0

私はSQL Server 2008を使用しています。データベースにテーブルがあります。次のようなものです。

テーブル

そして、次のような出力が必要です。

ここに画像の説明を入力

私の表に示されているように、smalldatetime データ型と果物と野菜のフィールドを持つ DateField があります。月ごとのデータを表示するような出力が必要です。月の比較は、テーブルの DateField に基づいて実行する必要があります。

4

1 に答える 1

1

次のようなものを使用できます。

select [Month] = month(DateField)
  , [MonthName] = left(datename(mm, DateField), 3)
  , TotalAmountApple = sum(case when fruits = 'Apple' then 1 else 0 end)
  , TotalAmountOnion = sum(case when vegi = 'Onion' then 1 else 0 end)
from produce
group by month(DateField)
  , left(datename(mm, DateField), 3)
order by [Month]

完全なテストの詳細 (問題が発生しているため、SQL Fiddle はありません):

create table produce
(
  id int
  , fruits varchar(10)
  , vegi varchar(10)
  , DateField smalldatetime
)

insert into produce
select 1, 'Apple', 'Chilly', '01-jan-2013'
insert into produce
select 1, 'Mango', 'Onion', '15-jan-2013'
insert into produce
select 1, 'Mango', 'Chilly', '20-jan-2013'
insert into produce
select 1, 'Apple', 'Chilly', '01-Feb-2013'
insert into produce
select 1, 'Mango', 'Onion', '15-Feb-2013'
insert into produce
select 1, 'Apple', 'Onion', '20-Feb-2013'

select [Month] = month(DateField)
  , [MonthName] = left(datename(mm, DateField), 3)
  , TotalAmountApple = sum(case when fruits = 'Apple' then 1 else 0 end)
  , TotalAmountOnion = sum(case when vegi = 'Onion' then 1 else 0 end)
from produce
group by month(DateField)
  , left(datename(mm, DateField), 3)
order by [Month]

ここに画像の説明を入力

于 2013-03-15T10:32:47.430 に答える