2016-10-01 35 views
0

我在Google BigQuery上使用查询编辑器。 我想按正确的顺序输出月份,例如从一月份开始,到十二月份结束。SQL:按正确顺序输出月份名称

这里是我的查询:

SELECT month, gender, SUM(cost) AS Cost 
FROM [medicare.medicareTable] 
GROUP BY month, gender 
ORDER BY month, gender 

不带上面ORDER BY,月均完全随机的顺序。现在他们已经按字母顺序排列,这有点更好,但仍然不是我想要的。

使用上面的查询,输出看起来是这样的:https://docs.google.com/spreadsheets/d/18r_HhY1jG3Edkj5Nk8gDM_eSQ_1fI6ePHSZuJuoAppE/edit?usp=sharing

由于任何人谁可以提供帮助。

+0

我正在使用Google BigQuery。 – helpmeplz

回答

4

为BigQuery的标准SQL,你可以使用PARSE_DATE()东西。您可以看到Supported Format Elements for DATE

WITH m AS (
    SELECT 'January 01 2016' AS d UNION ALL 
    SELECT 'February 01 2016' AS d UNION ALL 
    SELECT 'March 01 2016' AS d 
) 
SELECT d, EXTRACT(month FROM PARSE_DATE('%B %d %Y', d)) AS month_number 
FROM m 
ORDER BY month_number 
+0

@helpmeplz:我已经删除了我的答案。米哈伊尔Berlyant答案是正确的。 –

+0

嘿所以我得到这个错误:“遇到”“WITH”“WITH”“在第1行第1列。期待:” – helpmeplz

+0

这是标准SQL - 请参阅[启用标准SQL](https:// cloud.google.com/bigquery/sql-reference/enabling-standard-sql) –

0

您可以尝试从月份名称中获取月份编号,并按升序排序。

语法为SQL Server

select DATEPART(MM,'january 01 2016') -- returns 1 

所以,你可以尝试这样的

SELECT month, gender, SUM(cost) AS Cost 
FROM [medicare.medicareTable] 
GROUP BY month, gender 
ORDER BY datepart(MM,month + ' 01 2016'),gender 

希望这有助于

+0

嘿谢谢你的回复。我把你的查询,并得到这个错误:“查询失败 错误:12.10 - 13.20:无法识别的功能日期部分” – helpmeplz