関数を使用して PostgreSQL でピボット テーブルを作成する際に問題がありcrosstab()
ます。うまく機能しますが、同じclient_id
. どうすればこれを回避できますか?
SQLは次のとおりです。
SELECT *
FROM crosstab('SELECT client_id
,extract(year from date)
,sum(amount)
from orders
group by extract(year from date)
,client_id'
,'SELECT extract(year from date)
FROM orders
GROUP BY extract(year from date)
order by extract(year from date)')
AS orders(
row_name integer,
year_2001 text,
year_2002 text,
year_2003 text,
year_2004 text,
year_2005 text,
year_2006 text,
year_2007 text,
year_2008 text,
year_2009 text,
year_2010 text,
year_2011 text);
//編集
アーウィンへのThxは今は機能しますが、組み込み関数なしでこれを実行しようとしましたが、運がありませんでした。誰かがそれについて何か提案できますか?わずか2年間の私のコード:
SELECT DISTINCT o.client_id,
CASE WHEN (extract(year from o.date)=2001)
THEN sum(o.amount) ELSE 0 END,
CASE WHEN (extract(year from o.date)=2002)
THEN sum(o.amount) ELSE 0 END
FROM orders AS o
GROUP BY 1, extract(year from o.date)
ORDER BY 1;