私はSQL Server 2008を使用しています。データベースにテーブルがあります。次のようなものです。
そして、次のような出力が必要です。
私の表に示されているように、smalldatetime データ型と果物と野菜のフィールドを持つ DateField があります。月ごとのデータを表示するような出力が必要です。月の比較は、テーブルの DateField に基づいて実行する必要があります。
私はSQL Server 2008を使用しています。データベースにテーブルがあります。次のようなものです。
そして、次のような出力が必要です。
私の表に示されているように、smalldatetime データ型と果物と野菜のフィールドを持つ DateField があります。月ごとのデータを表示するような出力が必要です。月の比較は、テーブルの DateField に基づいて実行する必要があります。
次のようなものを使用できます。
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]