0

多くのドキュメントや Web ページを読んでも、コードを機能させる方法がわかりません。

select
(select count(*) from toto where (ddate between '2012-01-01' and '2012-12-31') group by produit) "2012",
(select count(*) from toto where (ddate between '2011-01-01' and '2011-12-31') group by produit) '2011',
(select count(*) from toto where (ddate between '2010-01-01' and '2010-12-31') group by produit) '2010'

SQL エラー コード : 1242 メッセージが表示されます。はい、返す行が複数あるため、それは正常です。

どうすればそれを処理できますか?PIVOTを使用して?しかし、どのように?

4

2 に答える 2

1

これを試して;

select produit, 
sum(case when ddate between '2012-01-01' and '2012-12-31' then 1 else 0 end) as '2012',
sum(case when ddate between '2011-01-01' and '2011-12-31' then 1 else 0 end) as '2011',
sum(case when ddate between '2010-01-01' and '2010-12-31' then 1 else 0 end) as '2010'
from toto
where ddate between '2010-01-01' and '2012-12-31'
group by produit
于 2013-02-06T18:29:56.163 に答える
0

以下を使用してデータをピボットできます。

select produit,
    COUNT(case when ddate = '2012' then produit end) as Year_2012,
    COUNT(case when ddate = '2011' then produit end) as Year_2011,
    COUNT(case when ddate = '2010' then produit end) as Year_2010
from 
(
    select produit,
        year(ddate) ddate
    from toto
    where ddate between '2010-01-01' and '2012-12-31'
) src
group by produit
于 2013-02-06T18:42:11.620 に答える