多个列上的COUNT()函数和带DISTINCT的SELECT

时间:2014-09-11 02:44:49

标签: sql sql-server count distinct

希望有人可以帮我解释为什么我在这里遇到语法错误。我计算所有具有两个不同列值的行。

select count (*) as 'Distinct' from (
    select distinct p.IDD, p.num
    from PERF1 p
    inner join MAST1 m
    on (m.id_table = p.id_table and m.SOURCE_TABLE = p.SOURCE_TABLE)
    where m.DATE > '2012-12-31' )

我在最后一个关键时刻收到错误,但在我的生活中不能说明我在这里做错了什么。 ...............................

一种巨大的"编辑"但我有点卡住了。我认为此查询将计算此表中不同行(对于两列)的数量。因此,例如,计数应该返回6,因为" P"和" T"重复。我以为我有这个:

select count (*) as 'Distinct' from (
select distinct p.IDD, p.co
from PERF1 p
inner join MAST1 m
on (m.id_table = p.id_table and m.SOURCE = p.SOURCE)
where m.DATE > '2012-12-31' ) TempTable

但是我得到的数字比我想的要高得多,所以我希望我的查询不正确。

+------+------+
| IDD  | CO   |
+------+------+
| 11   | P    |
| 12   | P    |
| 13   | T    |
| 14   | T    |
| 15   | R    |
| 16   | S    |
| 17   | U    |
| 18   | K    |

1 个答案:

答案 0 :(得分:2)

您需要为子查询添加别名

select count (*) as 'Distinct' from (
    select distinct p.IDD, p.num
    from PERF1 p
    inner join MAST1 m
    on (m.id_table = p.id_table and m.SOURCE_TABLE = p.SOURCE_TABLE)
    where m.DATE > '2012-12-31' ) TempTable