0

必要な金額と状態を含むこの 1 つのテーブルがあります。ただし、このテーブルには年情報が含まれていますが、月が必要です。たとえば、表では 2011 年のケンタッキー州の情報が表示されています..それだけです。カリフォルニアの場合、約 5 つの異なる年が表示されます。しかし、私はそれを月ごとに繰り返す必要があります。

したがって、2011 年にケンタッキー州の合計が 12 だった場合、1 月、2 月、5 月の 12 を示すクエリが必要です....繰り返し

今、私は私が持っているダムクエリでこの出力を取得します:

Kentucky  12   January
California 800 January

これは、状態、数量、月ごとにグループ化することで簡単に実行できます

数量に関係なく、各州にすべての月があることを確認したい

Kentucky  12   January
Kentucky  12   February
Kentucky  12   May
California 800 January
California 800 February
California 800 May

Teradata SQL でこれを行う方法について何か考えはありますか?

4

1 に答える 1

1

全体的なクエリは次のようになります。

SELECT
  state_quantities.state,
  state_quantities.quantity,
  all_months.month_name
FROM state_quantities
CROSS JOIN (
  ...
) all_months

all_months の括弧内の内容は、「すべての月」の意味によって異なります。

州に関係なく、state_quantities に表示されるすべての月を意味する場合 (ケンタッキーが 1 月、カリフォルニアが 2 月、フロリダが 5 月の場合、これらの 3 か月しか取得できません)、次のようなものを使用できます。

SELECT
  month_name
FROM state_quantities
GROUP BY month_name

12 か月すべてが必要な場合は、12 か月すべてを含むテーブルに結合します。それがない場合は、sys_calendar.calendar を使用できます (以下の構文はオフになっている可能性があります)。

SELECT
  CAST(calendar_date AS DATE FORMAT 'MMM') AS month_name
FROM sys_calendar.calendar
GROUP BY month_name
于 2011-09-29T23:28:08.150 に答える