我试图从表中计算每月每天的交易次数。我有这样的查询:
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
结果是这样的:
但我希望结果显示如下:
我应该怎么做才能修复它?谢谢:))
答案 0 :(得分:0)
只需从tanggal_daftar
子句中删除字段GROUP BY
:
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)
更改
group by namarss, tanggal_daftar
到
group by namarss
并更改
count(namarss) to count(tanggal_daftar) everywhere
编辑:
这很有效,但很难看:
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
表中提供一些样本数据确实会有所帮助。