2011-09-28 56 views
0

有这张表包含我需要的金额和状态。但是,此表包含年份信息,但我需要一个月。例如,在表格中它显示了2011年肯塔基州的信息......就是这样。对于加州来说,它显示了大约5年不同但我需要按月重复。Teradata默认清单

所以,如果在2011年肯塔基州有12个总的话,我需要一个查询,显示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执行此操作的任何想法?

+0

恐怕有足够的详细信息包括足以回答您的问题。 您正在加入日历表/视图以获取日期信息还是包含在单个表格中的所有数据? 您可以提供表格布局和用于生成结果的SQL吗? –

回答

1

总的查询会是这个样子:

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

什么括号之间无二all_months取决于你所说的“所有月份”什么。

如果你的意思是出现在state_quantities不论状态的所有月份(所以如果你有与肯塔基月,加州2月份和佛罗里达州的五月,你只能得到这三个月),你可以使用这样的事情:

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