2013-10-11 76 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 
相关问题