【发布时间】:2012-12-06 12:04:15
【问题描述】:
我有一个问题,我认为其中一个问题会在底部解决,但我仍然有问题。问题是我的案例陈述是错误的(但运行时没有错误)但不确定我还缺少什么。
我的目标是,如果 DueDate 为 NULL,因为 Table2 中没有记录,因此我只想将此值显示为“否”而不是“NULL”。我在代码中添加了“IsNull”,但没有解决我的问题。我在这些论坛上看到过 ISNULL() 和 COALEASE() 但无法得到我想要的结果
下面是我的工作代码:
SELECT
Client,
COUNT(*) AS ReadyRecords,
(SELECT COUNT(*) FROM Table1 EPR WHERE actioned=8 AND EPR.Client=Table1.Client) AS Outstanding,
(SELECT TOP 1
CASE
WHEN DueDate < GETDATE() THEN 'Yes'
WHEN DueDate IS NULL THEN 'No'
ELSE 'No'
END AS DueDate
FROM Table2 GL WHERE GL.Client=Table1.Client ORDER BY DueDate) AS DueDate
FROM Table1 WHERE Actioned=2 GROUP BY Client
编辑:
当前结果集:
Client | ReadyRecords | Outstanding | DueDate
Test | 42 | 54 | NULL
Stack | 150 | 10 | NULL
JBloggs | 32 | 28 | Yes
DBloggs | 2 | 17 | Yes
Overflow | 1 | 1 | No
所需的结果集:
Client | ReadyRecords | Outstanding | DueDate
Test | 42 | 54 | No
Stack | 150 | 10 | No
JBloggs | 32 | 28 | Yes
DBloggs | 2 | 17 | Yes
Overflow | 1 | 1 | No
表 1:
id | Client | Actioned | etc...
5245 | Test | 8 | etc...
....so on
表 2:
id | Client | DueDate
1 | JBloggs | 2012-12-01 00:00:00.000
2 | DBloggs | 2012-12-05 00:00:00.000
3 | Overflow | 2012-12-12 00:00:00.000
如果您还需要什么,请告诉我。
类似/相关问题:
【问题讨论】:
-
还应该使用
count(1)而不是count(*),这与count(*)的工作方式相同,但执行速度比获取*(all)值要快得多... -
@MayankPathak 谢谢你,我将从现在开始使用它。
-
@MayankPathak 我不确定 SQL Server 中的 count(*) 和 count(1) 之间是否存在任何性能差异。见this answer
标签: sql sql-server sql-server-2008-r2