Хорошо, это то, что я пробовал:
SELECT
DISTINCT [TRANSPORT ADDRESS] AS BUYERS,
CASE WHEN FRANCHISE = 'FRANCHISE' THEN COUNT(DISTINCT ORDERID) END AS [FRANCHISE],
CASE WHEN FRANCHISE = 'OWN' THEN COUNT(DISTINCT ORDERID) END AS [OWN]
FROM JOINED
GROUP BY [TRANSPORT ADDRESS]
ORDER BY [TRANSPORT ADDRESS]
Я получаю следующую ошибку:
Column 'JOINED.Franchise' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Очевидно, что для функций count () отсутствует группировка, япросто не знаю, где его добавить или возможно ли это сделать таким образом.
Я также пытался сделать это более многословно:
SELECT T1.BUYERS, [FRANCHISE SALES], [OWN SALES]
FROM
(SELECT DISTINCT [TRANSPORT ADDRESS] AS BUYERS, COUNT(DISTINCT ORDERID) AS [FRANCHISE SALES]
FROM JOINED
WHERE FRANCHISE = 'FRANCHISE'
GROUP BY TRANSPORT ADDRESS])
T1
FULL OUTER JOIN
(SELECT DISTINCT [TRANSPORT ADDRESS] AS BUYERS, COUNT(DISTINCT ORDERID) AS [OWN SALES]
FROM JOINED
WHERE FRANCHISE = 'OWN'
GROUP BY [TRANSPORT ADDRESS])
T2
ON T1.BUYERS = T2.BUYERS
ORDER BY T1.BUYERS
Но я не хочу объединять два атрибута ПОКУПАТЕЛЕЙ, чтобы собрать всех покупателей в одном столбце.Полагаю, мне следует использовать UNION
с этим решением, но это заставило бы меня делать больше переименований и ручного выбора, я думаю.
Так что мне интересно, смогу ли я сделать это как-нибудь как первый, более краткий способ.