Я, вероятно, прочитал дюжину похожих тем, но я не смог их использовать для решения моей проблемы. Я близка, может быть, всего на шаг или два от решения.Как объединить несколько строк в один в SQL
У меня есть таблица, в которой я загруженную данные, в который выглядит примерно так:
CustName | Model | Serial | Color | MonthlyCount
Freds | 123AB | L23456 | BLUE | 987
Freds | 123AB | L23456 | GREEN | 1127
Jimmys | 111SS | L11234 | BLUE | 2245
Erikas | 123AB | L11331 | RED | 12
Erikas | 123AB | L11331 | BLUE | 10
Erikas | 123AB | L11331 | GREEN | 19
То, что я хочу, чтобы объединить их в одну строку:
CustName | Model | Serial | GreenCount | BlueCount | RedCount
Freds | 123AB | L23456 | 987 | 1127 |
Jimmys | 111SS | L11234 | | 2245 |
Erikas | 123AB | L11331 | 19 | 10 | 12
Серийные номера являются уникальными поэтому я попытался включить Inner Join T1 в T2 и T1 в T3, используя T1.Serial = T2.Serial и T1.Serial = T3.Serial, но я все еще получаю строки с NULLS, например, Erikas возвращает 5 строк, только один из которых имеет все данные в нем
Я попытался с помощью Где «T1.MonthlyCount» (и т.д.) НЕ NULL, но это не фильтровать все строки из:
Select T1.CustName
,T1.Model
,T1.Serial
,(Select T1.MonthlyCount Where T1.Color = 'BLUE') As BlueCount
,(Select T2.MonthlyCount Where T2.Color = 'GREEN') As GreenCount
,(Select T3.MonthlyCount Where T3.Color = 'RED') As RedCount
From Table1 T1
Inner Join Table2 T2
on T1.Serial = T2.Serial
Inner Join Table3 T3
on T1.Serial = T3.Serial
Where T1.MonthlyCount IS NOT NULL
AND T2.MonthlyCount IS NOT NULL
AND T3.MonthlyCount IS NOT NULL
Group By Serial, CustName, Model, Color, MonthlyCount
Что я получаю это:
CustName | Model | Serial | GreenCount | BlueCount | RedCount
Freds | 123AB | L23456 | NULL | NULL | NULL
Freds | 123AB | L23456 | 987 | NULL | NULL
Freds | 123AB | L23456 | NULL | 1127 | NULL
Freds | 123AB | L23456 | 987 | 1127 | NULL <--Expected
Jimmys | 111SS | L11234 | NULL | NULL | NULL
Jimmys | 111SS | L11234 | NULL | 2245 | NULL <--Expected
Erikas | 123AB | L11331 | NULL | NULL | NULL
Erikas | 123AB | L11331 | 19 | NULL | NULL
Erikas | 123AB | L11331 | NULL | 10 | NULL
Erikas | 123AB | L11331 | NULL | NULL | 12
Erikas | 123AB | L11331 | 19 | 10 | 12 <--Expected
Я ищите только 3 строки, отмеченные как Ожидаемые. Будем очень благодарны любой помощи.
Многие проблемы с вашей текущей попыткой. Тем не менее, я бы сначала посоветовал вам google «SQL PIVOT». –