计数,函数返回空记录集需要返回0,而不是
我有这个疑问...计数,函数返回空记录集需要返回0,而不是
SELECT COUNT(*) AS dupes
FROM documents d JOIN mv_compgift g ON g.documentId = d.id
JOIN mv_donorid di ON di.documentId = d.id
JOIN mv_appealcode ac ON ac.documentId = d.id
GROUP BY di.value,ac.value,d.dateDeleted
HAVING COUNT(*) > 1
AND g.value = 'Y'
AND d.dateDeleted IS NULL
AND di.value = '0621839010'
AND ac.value = 'AD62Q'
我需要它显示为0时,我有一个空的记录集。
我看了,并尝试不同的功能,如coalesce,但没有作品...请帮助。感谢
DECLARE @Count INT
SELECT @Count=COUNT(*) AS dupes
FROM documents d JOIN mv_compgift g ON g.documentId = d.id
JOIN mv_donorid di ON di.documentId = d.id
JOIN mv_appealcode ac ON ac.documentId = d.id
GROUP BY di.value,ac.value,d.dateDeleted
HAVING COUNT(*) > 1
AND g.value = 'Y'
AND d.dateDeleted IS NULL
AND di.value = '0621839010'
AND ac.value = 'AD62Q'
SELECT ISNULL(@Count,0) AS [dupes]
如果它是一个程序,这很好。如果使用count,我不会声明bigint。计数函数返回一个整数,如果它是一个更大的数字,你将需要使用COUNT_BIG。 –
我不知道。根据记录数据,绝不会触及几乎那么大的事物。 – UnhandledExcepSean
SELECT
COUNT(*), -- raw value
CASE COUNT(*)
WHEN 1 THEN 'OK' WHEN 0 THEN 'NOTHING' ELSE 'DUPS'
END as HasDups -- translated value
FROM documents d JOIN mv_compgift g ON g.documentId = d.id
JOIN mv_donorid di ON di.documentId = d.id
JOIN mv_appealcode ac ON ac.documentId = d.id
WHERE g.value = 'Y' AND d.dateDeleted IS NULL
AND di.value = '0621839010' AND ac.value = 'AD62Q'
你HAVING
条件是消除不具有的DUP组。没有办法得到回零。
另外我很惊讶g.value
过滤器没有错误。无论如何,所有这些条件似乎属于WHERE
而不是HAVING
。
这仍然有可能不返回任何行。 –
@肖恩如此如此?当没有行时,Count()总是返回一个零。注意我已经删除了“GROUP BY”。 – shawnt00
Ahhh没有注意到你通过......没有注意到......在这里看不到任何东西。 –
当数据集为空时,它不能显示0。没有要计数的行。 ISNULL或COALESCE不会帮助,因为你没有行。 –
请将代码复制并粘贴到问题中,缩进4个字符(标记代码并按Ctrl + K或Cmd + K缩进)。 –
您每个组都返回一个计数,但组中没有其他值,您希望此查询完成的操作是什么? –