這個簡單的SQL問題給我一個非常困難的時間。要麼因爲我以錯誤的方式看到問題,要麼因爲我不熟悉SQL。或兩者。SQL Server:選擇日期時間並按日期分組
我在做什麼:我有一個表有幾列,我只需要其中兩個:創建條目的日期時間和條目的ID。請注意,這裏的時間/分鐘/秒部分是重要。
但是,我想根據DATE部分對我的選擇進行分組。否則,所有的團體將最有可能有1個元素。
這裏是我的查詢:
SELECT MyDate as DateCr, COUNT(Id) as Occur
FROM MyTable tb WITH(NOLOCK)
GROUP BY CAST(tb.MyDate as Date)
ORDER BY DateCr ASC
但是我從中得到以下錯誤:
,因爲它不是在聚合函數載列「MyTable.MyDate」在選擇列表中無效或GROUP BY子句。
如果我不在GROUP BY中執行演員,一切都很好。如果在SELECT中將MyDate投射到DATE,並保留GROUP BY中的CAST,那麼再一次罰款。顯然,它希望在GROUP BY中保持與SELECT中相同的DATE或DATETIME格式。
我的方法可能是完全錯誤的,所以我而不是必須尋求解決上述查詢,但找到正確的方法來做到這一點。
LE:我得到的第1行
LE2上述錯誤:在第二次看,我的問題確實也不是很明確的。如果完全錯誤,您可以忽略上述方法。下面是一個示例場景
讓我告訴你我需要什麼:我想在每個條目創建時檢索(1)DateTime。所以如果我有20個條目,那麼我想獲得20個日期時間。那麼如果我在同一天創建了多個條目,我想要這些條目的數量。例如,假設我在星期一創建了3個條目,星期二創建了1個條目,今天創建了2個條目。然後從我的表格中,我需要這6個條目的日期時間+每天創建的條目數(2012年3月19日爲3,2012年3月20日爲1,2012年3月21日爲2)。
在第二次看,我的問題確實也不是很明確的。讓我告訴你我需要什麼: 我想檢索(1)每個條目創建時的日期時間。所以如果我有20個條目,那麼我想獲得20個日期時間。那麼如果我在同一天創建了多個條目,我想要這些條目的數量。 例如,假設我在星期一創建了3個條目,週二創建了1個條目,今天創建了2個條目。然後從我的表格中,我需要這6個條目的日期時間+每天創建的條目數(2012年3月19日爲3,2012年3月20日爲1,2012年3月21日爲2)。 – Kaisar 2012-03-21 17:08:06
Aaron - 出於興趣,這是一個性能問題轉換在選擇和組按名單? – Bridge 2012-03-21 17:19:24
所以你想要星期一的單個日期/時間值,然後從星期一開始的每行都有*完全相同的計數?爲什麼不在兩個單獨的查詢中執行此操作 – 2012-03-21 17:20:57