2016-12-07 158 views
1

groupby中使用DateTime列時,結果有所不同。有人能解釋爲什麼嗎?GROUP BY with Where子句中的SQL

查詢:

Select Name, Source, Description, CreatedDate 
    From testTable 
    Where Source like '%Validating err%' 
    And CreatedDate >='2016-12-01' 
    Group By Name , Source, Description, CreatedDate 

結果: 15行

上面的查詢返回了我一些15的結果。但是,當我從groupby子句中刪除CreatedDate列時,它只返回4個結果。

查詢:

Select Name, Source, Description 
    From testTable 
    Where Source like '%Validating err%' 
    And CreatedDate >='2016-12-01' 
    Group By Name , Source, Description 

結果: 4行

+0

你正在用'> ='過濾日期而不是'='所以很明顯。另外你的第二個查詢也有'CreatedDate',我認爲這是一個排字錯誤 –

+0

@Prdp這些查詢不應該不在SQL Server中運行嗎? (也許在MySQL中)。 –

+0

現在這兩個查詢應該給你相同的記錄號 – Squirrel

回答

4

我加入這個答案只是@約翰的利益,所以他可以直觀地理解爲什麼他的兩個結果集有記錄不同數量。

想象一下名爲shirts的表格,它只有兩列sizecolor。以下是一些示例數據:

size | color 
S | red 
S | green 
S | blue 
M | red 
M | green 
M | blue 
L | red 
L | green 
L | blue 

換句話說,襯衫有三種尺寸,每種尺碼都有三種可能的顏色。

現在,如果執行以下查詢:

SELECT size 
FROM shirts 
GROUP BY size 

你會得到三條記錄回來,只含有三種尺寸。但是,如果你做到以下幾點:

SELECT size, color 
FROM shirts 
GROUP BY size, color 

然後,你還是會回到記錄,或組。這裏發生的所有事情是,增加另一列創建新的可能的組合,從而創建更多的組。同樣的概念適用於你在兩個查詢中看到的內容。

+0

不錯............ –