So, in order to get 0s in my count column I have tried out this query which works.
SELECT b.TXT_RECORD_DATE, a.TXT_CALL_TYPE,
SUM(CASE
WHEN b.TXT_CALL_TYPE IS NOT NULL
THEN 1
ELSE 0
END) AS StatusCount
FROM (
SELECT DISTINCT TXT_CALL_TYPE
FROM CDR
) a
LEFT JOIN CDR b ON a.TXT_CALL_TYPE = b.TXT_CALL_TYPE AND b.TXT_RECORD_DATE IN ('2022-04-12', '2022-04-13','2022-04-14')
GROUP BY a.TXT_CALL_TYPE, b.TXT_RECORD_DATE;
But it shows [NULL]s in the columns where StatusCount = 0
So my question is that is there a way to actually assign the date that is being currently searched instead of the [NULL]
The current result looks like this
| TXT_RECORD_DATE | TXT_CALL_TYPE | StatusCount |
|---|---|---|
| BRD | 0 | |
| 2022-04-12 | Busy Call | 9 |
| IDIN | 0 | |
| IDOT | 0 | |
| 2022-04-12 | Incoming - Missed Call | 133 |
| 2022-04-13 | Incoming - Missed Call | 38 |
| 2022-04-14 | Incoming - Missed Call | 29 |
| ITRS | 0 | |
| IVIN | 0 | |
| 2022-04-12 | IVOT | 21 |
| 2022-04-13 | IVOT | 27 |
| 2022-04-14 | IVOT | 20 |
| PIN | 0 | |
| 2022-04-12 | POT | 1 |
| 2022-04-12 | PTRS | 19 |
| 2022-04-13 | PTRS | 4 |
| 2022-04-14 | PTRS | 14 |
Sorry if I forgot anything or was not clear. I'm writing to you in the middle of the night and is so tired. Thanks Anyways. You guys are always awesome.
You need to generate a list of the dates you are interested in and
CROSS JOINthat to the list of call types; then you canLEFT JOINthat to the call records to get the result you want. In MariaDB you can make use of the sequence storage engine to easily generate a list of the dates:Demo on dbfiddle