2017-05-26 28 views
-1

我遇到了我的sql查询问题(Select distinct did not work)。SQL如果有计数子句,则区别不能工作

我的SQL是:

select distinct 
count(T2.Column1) 
from Table1 t2 
where T2.Column1='2017-05-210' 

实际列1的数据只有3个数据, 但输出

注意: - 列1的数据是具有1与许多情况Column2

以下是实际数据:

Column 1 Column 2 
    1   A 
    1   B 
    1   C 
    1   D 
    2   A 
    2   B 
    2   C 
    2   D 
    3   A 
    3   B 
    3   C 
    3   D 

任何人都可以帮助我吗? 真的很感谢您的关注。

谢谢!

+0

正如我们的答案中所述,您的数据,结果和查询不匹配。此外,您显示的数据是** m:n **,而不是1:n(第1列中的值可以与许多第2列值配对,例如1A,1B,1C和1D,并且第2列中的值可以与许多列1值,例如1A,2A,3A)。 –

回答

0

你想算不同的值,所以做count(distinct):(。但是,您的样本数据和查询的数据/列不匹配)

select count(distinct T2.Column1) 
from Table1 t2 
where T2.Column1='2017-05-210' 

+0

非常感谢你jarlh, 你的代码工作, 我只是意识到,我需要在不同的括号“不同”,所以使这一列更具体的计数。 –

0

你的样本数据,结果和查询不匹配。

然而,你的查询会是:

  1. 找到所有记录与column1 = '2017-05-210'
  2. 对所有这些记录进行计数,其中column1不为空(对于所有这些记录均如此,如column1 = '2017-05-210')。
  3. 这会产生一个数字(一行一列)。但是,您还要用DISTINCT表示您想从结果行中删除任何重复项。只有一行可以没有重复,所以这里的功能是多余的。

所以想想你真正想要的是什么。您可以用COUNT(DISTINCT column)来计算不同的值(即忽略重复的计数),但COUNT(DISTINCT column1)当然会返回1,因为您只需要寻找一个的值,即'2017-05-210'(或者在没有与此值匹配的记录的情况下为零)。