2016-01-25 6 views
0

Я использую этот сценарий, чтобы найти service_code (ы), что матч с ada_code из моей таблицы услуг, а затем найти сделки, которые имеют те service_code S как ada_code не в transactions таблицыSQL Обозначает значение группы?

WITH dentures AS (
SELECT service_code 
FROM services 
WHERE (ada_code='D5110' OR ada_code='D5120' OR ada_code='D5130' OR ada_code='D5140' OR ada_code='REMAU' OR ada_code='REAML' OR ada_code='REMAK')) 

SELECT t.clinic, COUNT(DISTINCT t.tran_num) AS quantity, d.service_code, SUM(t.amount) AS total, p.fiscal_year, p.period_id 
FROM transactions t 
INNER JOIN dentures d 
ON(t.service_code=d.service_code) 
CROSS JOIN period p 
WHERE (t.time_ran BETWEEN p.period_start AND p.period_end) 
AND status='A' 
AND impacts='P' 
GROUP BY t.clinic, d.service_code, p.fiscal_year, p.period_id 

Сценарий работает как есть, но мне нужно разделить на две разные группы. Группа A (все коды обслуживания от D5110, D5120, D5130, D5140) и группы B, которые являются левыми. Есть ли способ по существу взглянуть на service_code на службы, которые используют те ada_code s и предопределить их как группу ранее? Между четырьмя ada_code s в группе A для каждого из них около 10, и у меня есть 35 разных уникальных мест, которые также используют их, которые необходимо хранить отдельно. Благодаря

ответ

0

Вместо группировки по коду обслуживания, просто группы с помощью сазе как

CASE WHEN servicecode IN (group a codes) "Group A" 
     ELSE servicecode --or "Group B", I'm not sure which you want 
END 
Смежные вопросы