下面的語句:按SQL分組,但顯示完整的日期時間?
group by datepart(wk, createdon)
組所選行根據其下跌的一週。我的select語句顯示如下:
SELECT
datepart(wk, createdon) week,
如何顯示星期幾(「2012年12月10日」)的實際日期時間,而非數(「12」)?
下面的語句:按SQL分組,但顯示完整的日期時間?
group by datepart(wk, createdon)
組所選行根據其下跌的一週。我的select語句顯示如下:
SELECT
datepart(wk, createdon) week,
如何顯示星期幾(「2012年12月10日」)的實際日期時間,而非數(「12」)?
如果我理解正確的話,你想按周也返回完整的日期時間。您必須將所選字段包含在聚合列中。 正是如此應該工作:
SELECT DATEPART(wk, createdon) week, createdon
FROM TableName
GROUP BY DATEPART(wk, createdon), createdon
文選MSSQL2008R2
編輯: 由於OP似乎希望在一週的開始日期,因此具有answer。
你不能按一個星期分組,然後顯示它的組成部分,即天。您將需要按日期分組。
一種選擇是使用CTE與ROW_NUMBER
代替:
WITH CTE AS
(
SELECT
RN = ROW_NUMBER() OVER (PARTITION BY datepart(wk, createdon) ORDER BY createdon)
, DATEADD(ww, DATEDIFF(ww,0,createdon), 0) As Week
, *
FROM dbo.Table
)
SELECT * FROM CTE
WHERE RN = 1
Everyone:不要忽視這個答案。它提供了一種優雅的方式來完成我們以前在臨時表中所做的事情。 +1 –
是否要顯示每行的createdon實際值?如果你這樣做,那麼你不能按照星期來「分組」行。您是否想要顯示某個特定星期的某個特定日期,例如相應的星期一的日期,或者其他類似的日期?如果是這樣,我們需要知道哪一個。 –
如果您在同一周內有多個日期,您想顯示什麼? – Taryn
我想顯示本週開始的實際日期 - 比如「date of」+ createdon。 – RobVious