2016-06-30 6 views
0

私は毎月テーブルから何件の取引を数えようとしています。私はこのようなクエリがあります。ケースSQLを使用する方法?

SELECT namarss, 
case(tanggal_daftar) when '2016-06-01' then count(namarss) else '' end as "01", 
case(tanggal_daftar) when '2016-06-02' then count(namarss) else '' end as "02", 
case(tanggal_daftar) when '2016-06-03' then count(namarss) else '' end as "03", 
case(tanggal_daftar) when '2016-06-04' then count(namarss) else '' end as "04", 
case(tanggal_daftar) when '2016-06-05' then count(namarss) else '' end as "05", 
case(tanggal_daftar) when '2016-06-06' then count(namarss) else '' end as "06", 
case(tanggal_daftar) when '2016-06-07' then count(namarss) else '' end as "07", 
case(tanggal_daftar) when '2016-06-08' then count(namarss) else '' end as "08", 
case(tanggal_daftar) when '2016-06-09' then count(namarss) else '' end as "09", 
case(tanggal_daftar) when '2016-06-10' then count(namarss) else '' end as "10", 
case(tanggal_daftar) when '2016-06-11' then count(namarss) else '' end as "11", 
case(tanggal_daftar) when '2016-06-12' then count(namarss) else '' end as "12", 
case(tanggal_daftar) when '2016-06-13' then count(namarss) else '' end as "13", 
case(tanggal_daftar) when '2016-06-14' then count(namarss) else '' end as "14", 
case(tanggal_daftar) when '2016-06-15' then count(namarss) else '' end as "15", 
case(tanggal_daftar) when '2016-06-16' then count(namarss) else '' end as "16", 
case(tanggal_daftar) when '2016-06-17' then count(namarss) else '' end as "17", 
case(tanggal_daftar) when '2016-06-18' then count(namarss) else '' end as "18", 
case(tanggal_daftar) when '2016-06-19' then count(namarss) else '' end as "19", 
case(tanggal_daftar) when '2016-06-20' then count(namarss) else '' end as "20", 
case(tanggal_daftar) when '2016-06-21' then count(namarss) else '' end as "21", 
case(tanggal_daftar) when '2016-06-22' then count(namarss) else '' end as "22", 
case(tanggal_daftar) when '2016-06-23' then count(namarss) else '' end as "23", 
case(tanggal_daftar) when '2016-06-24' then count(namarss) else '' end as "24", 
case(tanggal_daftar) when '2016-06-25' then count(namarss) else '' end as "25", 
case(tanggal_daftar) when '2016-06-26' then count(namarss) else '' end as "26", 
case(tanggal_daftar) when '2016-06-27' then count(namarss) else '' end as "27", 
case(tanggal_daftar) when '2016-06-28' then count(namarss) else '' end as "28", 
case(tanggal_daftar) when '2016-06-29' then count(namarss) else '' end as "29", 
case(tanggal_daftar) when '2016-06-30' then count(namarss) else '' end as "30", 
case(tanggal_daftar) when '2016-06-31' then count(namarss) else '' end as "31" 
FROM mcutrpendaftaran 
group by namarss, tanggal_daftar 

をし、その結果、このようなものです:

enter image description here

が、私はこのような結果ショーをしたい:

enter image description here

は、私がすべきそれを修正するには?ありがとう:)

+0

テーブルの定義を更新してください –

+0

あなたの要件は**毎日の各ナマーの数を計算することです**。もっと簡単なクエリ( 'namarass by group by dayとカウントを得る)をうまく採用してください。後で、アプリケーションレベルでピボット操作を行います。 – 1000111

答えて

0

だけGROUP BY句からフィールドtanggal_daftarを削除:

SELECT namarss, 
     case when tanggal_daftar = '2016-06-01' then 1 end as "01", 
     case when tanggal_daftar = '2016-06-02' then 1 end as "02", 
     case when tanggal_daftar = '2016-06-03' then 1 end as "03", 
     case when tanggal_daftar = '2016-06-04' then 1 end as "04", 
     case when tanggal_daftar = '2016-06-05' then 1 end as "05", 
     ... 

FROM mcutrpendaftaran 
group by namarss 

上記のクエリは、namarss値ごとにあなたに1つのレコードを与える必要があります。

+0

tanggal_daftarを削除した場合、日付2に「6」と表示されます。@GiorgosBetsos – Ayharu

+0

@Soemohardjo私が行った編集を確認してください。 –

0

変更

group by namarss, tanggal_daftar 

group by namarss 

へと変更

count(namarss) to count(tanggal_daftar) everywhere 

EDIT:

これは動作しますが、それは醜いです:

select namarss, sum([01]) [01], sum([02]) [02], sum([03]) [03], sum([04]) [04] 
from (
SELECT namarss, 
case(tanggal_daftar) when '2016-06-01' then count(tanggal_daftar) else '' end as "01", 
case(tanggal_daftar) when '2016-06-02' then count(tanggal_daftar) else '' end as "02", 
case(tanggal_daftar) when '2016-06-03' then count(tanggal_daftar) else '' end as "03", 
case(tanggal_daftar) when '2016-06-04' then count(tanggal_daftar) else '' end as "04" 
FROM mcutrpendaftaran 
group by namarss, tanggal_daftar) A group by namarss 

これはテストしていませんが、このクエリが機能しても最適化されていません。 mcutrpendaftaranテーブルのサンプルデータを入力すると、実際に役立ちます。

+0

結果は同じですが、違いはありません@AshwinNair – Ayharu

関連する問題