2013-10-11 75 views
0

我的代碼是:如何組合同一列中具有相同數據的多行?

SELECT datepart(year, request_created_date) AS request_year, 
    datepart(month, request_created_date) AS request_month, 
    datepart(week, request_created_date) AS request_week, 
    count(request_id) AS request_count 
FROM nyc311_requests 
GROUP BY request_created_date 
ORDER BY request_week 

在我得到的輸出,我有兩排,其中request_week是36個7行,其中它是37.我想要的是列一樣,合併成一排。

+0

您是否嘗試過改變你GROUP BY到'GROUP BY DATEPART(周,request_created_date)' – Linger

+0

是的,但我得到一個錯誤,指出request_created_date是無效的,因爲它不是一個聚合或在GROUP BY條款。 –

+3

以下情況如何:GROUP BY日期部分(year,request_created_date),datepart(month,request_created_date),datepart(week,request_created_date)' – Linger

回答

1

如果你要使用GROUP BY子句,你將不得不包括所有其他比GROUP BY計算字段的字段:

SELECT datepart(year, request_created_date) AS request_year, 
    datepart(month, request_created_date) AS request_month, 
    datepart(week, request_created_date) AS request_week, 
    count(request_id) AS request_count 
FROM nyc311_requests 
GROUP BY datepart(year, request_created_date), 
    datepart(month, request_created_date), 
    datepart(week, request_created_date) 
ORDER BY request_week 

或者,如果你想有一個更清潔尋找查詢:

SELECT M.*, count(*) AS request_count FROM 
(
    SELECT datepart(year, request_created_date) AS request_year, 
     datepart(month, request_created_date) AS request_month, 
     datepart(week, request_created_date) AS request_week 
    FROM nyc311_requests 
)AS M 
GROUP BY M.request_year, M.request_month, M.request_week 
ORDER BY M.request_week 
相關問題