現在、特定の月の入力されたフィールドのカウントを提供するSQLビューをプログラミングしています。ビュー内の動的な列名(Postgres)
これは私が構築するビューをご希望の方法です:
Country | (Current Month - 12) Eg Feb 2011 | (Current Month - 11) | (Current Month - 10)
----------|----------------------------------|----------------------|---------------------
UK | 10 | 11 | 23
月の下の数は、特定の国のためにすべて読み込まフィールドの数でなければなりません。フィールドの名前はeldateで、フォーマット10-12-2011の日付(charとしてキャスト)です。月に一致する日付だけを数えたいと思っています。
したがって、「現在の月 - 12」の列には、今から12ヶ月前の月の日付が含まれている必要があります。たとえば、現在の月 - 英国の場合は12月に、2011年2月以内の日付が含まれていなければなりません。
私は、列見出しは、実際にそのように見ている月を反映したいと思います:
Country | Feb 2011 | March 2011 | April 2011
--------|----------|------------|------------
UK | 4 | 12 | 0
だから、のようなもの:
SELECT c.country_name,
(SELECT COUNT("C1".eldate) FROM "C1" WHERE "C1".eldate LIKE %NOW()-12 Months% AS NOW() - 12 Months
(SELECT COUNT("C1".eldate) FROM "C1" WHERE "C1".eldate LIKE %NOW()-11 Months% AS NOW() - 11 Months
FROM country AS c
INNER JOIN "site" AS s using (country_id)
INNER JOIN "subject_C1" AS "C1" ON "s"."site_id" = "C1"."site_id"
は明らかにこれは動作しませんが、あなたを与えるために私が何を得ているかのアイデア。
アイデア?
ご協力いただきありがとうございます、それ以上のお問い合わせはお問い合わせください。
をこれはビューではありますが、関数を使用することもできます。PostgreSQLでは、次のような関数を呼び出すことができます: 'SELECT * FROM funName()' – DavidEG
ええ、私はそれがおそらく方法だと思っていましたが、私は初心者であり、これを行うための関数 –