Это упрощенная версия моей проблемы.Получить сопоставимые строки, используя соединение
У меня есть таблица, как показано ниже
Id Name SNumber
100 XYZ 123
100 XYZ 123
101 ABC 123
103 QAZ 123
100 XYZ 971
100 XYZ 872
100 XYZ 659
102 PQR 145
102 PQR 707
103 QAZ 421
Я хочу подсчета строк, имеющих Snumber как «123» т.е. Всего столбцов и строк, имеющих Snumber не как «123», то есть otherTotal колонка
Id Name Total OtherTotal
100 XYZ 2 3
101 ABC 1 0
102 PQR 0 2
103 QAZ 1 1
То, что я делаю, используя присоединиться
Select xx.*,otherTotal
From
(Select Id,Name,count(*) as Total
From table
Where Snumber like '123'
Group By id,name
)xx
Inner join
(Select Id,Name,count(*) as otherTotal
From table
Where Snumber not like '123'
Group By id,name
)yy
On xx.Id=yy.Id
Но это будет возвращать только строки, если конкретный Id
имеет как Snumber
в 123
, а не 123
вернулся
данных как ниже
Id Name Total OtherTotal
100 XYZ 2 3
103 QAZ 1 1
Теперь нет guarntee, что конкретный идентификатор всегда будет иметь Snumber, как 123, поэтому я не могу использовать Left или Right join. Как решить эту трясину? Giggity