这里有一个表格,其中包含我需要的金额和状态。但是,此表包含年份信息,但我想要月份。例如,在表格中,它显示了肯塔基州的信息,2011..and就是它。对于加利福尼亚,它显示了大约5个不同的年份。但我需要一个月一个月地重复。
因此,如果2011年肯塔基州有12个总数,那么我需要一个查询来显示1月、2月、May....repeatedly的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做到这一点的想法吗?
发布于 2011-09-29 23:28:08
整个查询如下所示:
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月份,你只会得到这三个月),你可以使用这样的内容:
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
https://stackoverflow.com/questions/7583174
复制相似问题