У меня есть требование отображать данные по месяцам рядом.
Ниже приведены записи в таблице:
|Student ID| Type | Date | Amount($)
|00000001 | Foods |01/01/2009 | 10
|00000001 | Foods |01/02/2009 | 20
|00000002 | Drinks |01/01/2009 | 10
|00000003 | Snacks |01/02/2009 | 10
|00000003 | Drinks |01/02/2009 | 10
Ожидаемые результаты аналогичны приведенным ниже:
|Student ID| Type | Jan | Feb
|00000001 | Foods | 10 | 20
|00000002 | Drinks | 10 | 0
|00000003 | Snacks | 0 | 10
|00000003 | Drinks | 0 | 10
Количество типов Foods for Student ID отображается в зависимости от месяца.
Я пытался достичь ожидаемых результатов, используя оператор CASE, как показано ниже, но он не может достичь того, что ожидается.
SELECT STUDENT_ID
, TYPE
, CASE WHEN MONTH(DATE)=1 THEN AMOUNT ELSE 0 AS JAN
, CASE WHEN MONTH(DATE)=2 THEN AMOUNT ELSE 0 AS FEB
FROM CANTEEN_SPENT
Но результаты выглядят как ниже
|Student ID| Type | Jan | Feb
|00000001 | Foods | 10 | 0
|00000001 | Foods | 0 | 20
|00000002 | Drinks | 10 | 0
|00000003 | Snacks | 0 | 10
|00000003 | Drinks | 0 | 10
Данные для идентификатора студента 00000001 следует объединить, как показано в ожидаемом примере.