Каков наилучший способ вывести определенные значения данных в строку? - PullRequest
0 голосов
/ 04 октября 2018

Я работаю над запросом, который использует много таблиц.Некоторые из ценностей, которые я пытаюсь уловить, потребуют дополнительной работы с моей стороны.

У меня есть базовые поля, которые я собираю, которые поступают непосредственно из таблиц.Легко.Однако некоторые поля, которые мне нужны, требуют дополнительного кодирования.

Например, мне нужно найти сумму денег, заплаченную клиентом за конкретный продукт.Поэтому мне нужно добавить название типа продукта в свой оператор WHERE для каждого из этих полей.

Я знаю, что могу использовать подзапросы для каждого из них, но мне нужно присоединиться по крайней мере4 разные таблицы в каждом из этих подзапросов, затем добавьте 2 оператора WHERE: одну для связи данных с основным запросом и другую для конкретного выбора продукта, который я хочу выбрать.

Мой вопрос: как лучше всего это сделать с точки зрения производительности?Должен ли я выполнить несколько подзапросов или лучше использовать временную таблицу для каждого продукта, чем в конце запроса использовать левые соединения, чтобы собрать все вместе?

I 'Извините, у меня нет кода для публикации этого вопроса.У меня сейчас нет доступа к компьютеру.

1 Ответ

0 голосов
/ 04 октября 2018

Вот пример запроса, который я думаю отвечает на то, что вы хотите сделать, следуя некоторым комментариям и основываясь на чисто составленных таблицах:

select customerid, customername, 
    sum(case when producttype='shoes' then salesvalue else 0 end) as ShoeValue,
    sum(case when producttype='tshirt' then salesvalue else 0 end) as TShirtValue
from customer
join sales on sales.customerid=customer.customerid
group by customerid, customername
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...