Два sql запроса как один - PullRequest
       8

Два sql запроса как один

0 голосов
/ 07 февраля 2012

Есть два SQL-запроса, я хочу написать как один запрос. второй запрос отображает количество отдельных записей, где action_text, например, «% STAFF%». Я пытался использовать UNION, но это не сработало.

select date(dated) date_ord,
count(DISTINCT order_number) as orders_placed, 
sum(case when action_text like '%STAFF%' then 1 else 0 end) AS orders_staff,
sum(case when action_text in (
                'CBA Capture attempt',
                'GCO Capture attempt',
                'PPP Capture',
                'PPE Capture',
                'Staff CC capture',
                'Web CC capture',
                'Staff Finance WIRE authorized',
                'Staff Finance PO authorized',
                'Staff Finance COD authorized',
                'Authorized The CPIC') then 1 else 0 end)     AS     orders_manuallycaptured
 from stats.sales_actions
 group by date_ord 
 order by dated desc


SELECT COUNT(DISTINCT order_number) as unique_orderstouched,
date(dated) date_ords
FROM sales_actions
WHERE action_text like '%STAFF%' 
group by date_ords 
order by dated desc

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Насколько я могу судить, единственный новый столбец во втором запросе - COUNT(DISTINCT order_number) ... WHERE action_text LIKE '%STAFF%'.

Тогда вы можете просто добавить COUNT(DISTINCT IF(action-text LIKE '%STAFF%',order_number,NULL)) as unique_orderstouched к исходному запросу.

(Также я предполагаю, что таблица stats.sales_actions в вашем первом запросе совпадает с таблицей sales_actions во втором запросе?).

В итоге вы получите:

select date(dated) date_ord,
count(DISTINCT order_number) as orders_placed, 
sum(case when action_text like '%STAFF%' then 1 else 0 end) AS orders_staff,
sum(case when action_text in (
                'CBA Capture attempt',
                'GCO Capture attempt',
                'PPP Capture',
                'PPE Capture',
                'Staff CC capture',
                'Web CC capture',
                'Staff Finance WIRE authorized',
                'Staff Finance PO authorized',
                'Staff Finance COD authorized',
                'Authorized The CPIC') then 1 else 0 end) AS orders_manuallycaptured,
-- new line follows
COUNT(DISTINCT IF(action-text LIKE '%STAFF%',order_number,NULL)) 
   AS unique_orderstouched
 from stats.sales_actions
 group by date_ord 
 order by dated desc

* * * * * * * * * * * * * * * * * * * * * * * * *1013* * * * * * * * * * * * * * * * * * * * * * *}

0 голосов
/ 07 февраля 2012

Если вы выполняете объединение, выбранные столбцы должны быть одинаковыми между двумя запросами. Вам нужно иметь одинаковое количество столбцов, одинаковые типы данных, и они должны быть в одинаковом порядке В первом запросе вы выбираете четыре столбца, а во втором запросе только два.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...