- Mar 1, 2000
- 30,890
- 5,001
- 126
I have a query:
But sometimes one (or more) of those CODES have no hits in the database. So it will not return a row for those “empty” counts/rows.
I have 108 CODES listed there in the WHERE clause.
No matter what, I want 108 rows to be returned.
is that possible? If so, how?
Somehow to replace any "NULL" GROUP with "0" or something.
SELECT
CODE,
MIN(DATE) AS 'Oldest',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) < -5) THEN FILENO END) AS '> 5 Days Behind',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = -5) THEN FILENO END) AS '-5',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = -4) THEN FILENO END) AS '-4',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = -3) THEN FILENO END) AS '-3',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = -2) THEN FILENO END) AS '-2',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = -1) THEN FILENO END) AS '-1',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 0) THEN FILENO END) AS 'TODAY',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 1) THEN FILENO END) AS '1',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 2) THEN FILENO END) AS '2',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 3) THEN FILENO END) AS '3',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 4) THEN FILENO END) AS '4',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 5) THEN FILENO END) AS '5',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 6) THEN FILENO END) AS '6',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 7) THEN FILENO END) AS '7',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 8) THEN FILENO END) AS '8',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 9) THEN FILENO END) AS '9',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 10) THEN FILENO END) AS '10',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 11) THEN FILENO END) AS '11',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 12) THEN FILENO END) AS '12',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 13) THEN FILENO END) AS '13',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) = 14) THEN FILENO END) AS '14',
COUNT(CASE WHEN (DATEDIFF(DAY,GETDATE(),DATE) > 14) THEN FILENO END) AS '>=14 Days Ahead',
COUNT(*) AS "TOTAL"
FROM DIARYINT
WHERE CODE IN (45, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 310, 320,
321, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 344, 347, 364, 379, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 393, 398, 399) OR
CODE IN (400, 401, 403, 404, 405, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
440, 441, 442, 443, 451, 460, 462, 463, 464, 465, 466, 467, 468, 470, 490, 491, 492, 493, 494, 495, 496, 499, 530, 570, 571, 340, 341)
GROUP BY CODE
But sometimes one (or more) of those CODES have no hits in the database. So it will not return a row for those “empty” counts/rows.
I have 108 CODES listed there in the WHERE clause.
No matter what, I want 108 rows to be returned.
is that possible? If so, how?
Somehow to replace any "NULL" GROUP with "0" or something.