2016-10-01 55 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