質問の1つが一番下で解決すると思った問題がありますが、それでも問題があります。問題は、私のcaseステートメントが間違っている(ただし、エラーなしで実行される)が、他に何が欠けているのかわからないことです。
私の目的は、Table2にレコードがないためにDueDateがNULLの場合、この値を「NULL」ではなく「No」として表示することだけです。コードに「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
他に何か必要な場合はお知らせください。
類似/関連する質問: