Sql 为什么DISTINCT COUNT()返回9而不是1?

Sql 为什么DISTINCT COUNT()返回9而不是1?,sql,db2,ibm-midrange,Sql,Db2,Ibm Midrange,我有以下声明: SELECT DISTINCT COUNT(Z.TITLE) AS COUNT FROM QMFILES.MPRLRREQDP Y, QMFILES.MPRLRTYPP Z WHERE Y.REQUEST_TYPE = Z.ID AND Y.REQUEST_ID = 13033; 在这个特定的结果集中,如果我删除了DISTINCT和COUNT(),结果集将返回九行完全相同的数据。如果我添加独立的,我会得到一行。添加COUNT()我得到的结果是九,而我期望的结

我有以下声明:

SELECT DISTINCT COUNT(Z.TITLE) AS COUNT 
FROM QMFILES.MPRLRREQDP Y, 
     QMFILES.MPRLRTYPP Z
WHERE Y.REQUEST_TYPE = Z.ID 
  AND Y.REQUEST_ID = 13033;
在这个特定的结果集中,如果我删除了
DISTINCT
COUNT()
,结果集将返回九行完全相同的数据。如果我添加
独立的
,我会得到一行。添加
COUNT()
我得到的结果是九,而我期望的结果是一。我假设操作的顺序会影响我的结果,但是我如何解决这个问题才能得到我想要的结果呢


注意:这是较大SQL语句中的一个子选择。

SELECT DISTINCT COUNT(Z.TITLE)
使用
Z.TITLE
(九)的值对行数进行计数。
DISTINCT
是多余的,因为
COUNT
已经聚合了行


SELECT COUNT(DISTINCT Z.TITLE)
统计
Z.TITLE
(一个)中不同值的数量。

该计数将生成一条新记录,其中包含SELECT语句中的项数。DISTINCT正在查找计数结果,毕竟这只是一条记录。

如果您确实想要标题,那么它应该是

SELECT Z.Title, COUNT(Z.TITLE) AS COUNT 
FROM QMFILES.MPRLRREQDP Y, 
    QMFILES.MPRLRTYPP Z
WHERE Y.REQUEST_TYPE = Z.ID 
    AND Y.REQUEST_ID = 13033
GROUP BY Z.Title;
那会给你一些

"Title 1", 9
或者如果你有多个头衔

"Title 1", 6
"Title 2", 2
"Title 3", 1

这个数字就是那个不同头衔的计数。

我想count(distinct Z.title)会做你想做的事。我不知道你能做到。早上我会试试。正如我所说,这是一个更大的SQL语句的一部分。这只是其中的一个选择。我标出了我问题的答案。