SQL:以正确的顺序输出月份名称

时间:2016-10-01 08:09:25

标签: sql google-bigquery

我在Google BigQuery上使用查询编辑器。 我想以正确的顺序输出月份,例如从1月开始,到12月结束。

这是我的问题:

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

感谢任何可以提供帮助的人。

2 个答案:

答案 0 :(得分:5)

对于BigQuery Standard 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

答案 1 :(得分: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

希望这有帮助