2016-12-07 154 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

不错............ –