【发布时间】:2014-09-22 21:13:29
【问题描述】:
如果 COUNT 结果小于 1,我希望我的存储过程在列中返回 NULL,否则返回 COUNT 值。这是一种反向ISNULL???
SELECT *,
(SELECT COUNT(*) FROM Requests WHERE RequestDB = RequestDatabase.RequestDB
AND RequestStatus < 3) AS OpenRequests
FROM RequestDatabase
我在想也许可以使用 CASE WHEN,但我收到一条错误消息,指出我的 CASE 不能为空。
【问题讨论】:
-
返回零计数有什么问题?
-
没什么,在这种情况下,我在客户端应用程序中处理空值比强制转换和测试为零更好
-
除非计数操作失败,否则不应使用
NULL表示计数的输出。我认为你应该重构你解释你试图写的值的方式NULL。 -
我相信无论如何你都需要投射。否则,您如何获得非零值?所以唯一的额外步骤是你的
IF,这在任何情况下都是不可避免的。 -
我同意你的所有观点,这将是我的正常路线,但是我希望在这个简单的实现中,我可以在 SQL 中保留数据格式。具有“打开请求”的行将显示其打开请求的计数,否则仅显示其数据库名称。感谢您的所有提示!
标签: sql-server tsql