Может ли кто-нибудь помочь мне в решении ниже проблемы., используя self-join для извлечения уникальных столбцов
Table1:
MSISDN(PK) product_name BASE_SOCBoo PLAN_NAME Limit
1 152 WHOADJTH2 N ABC 10
2 152 WADADJTH5 N ABC 20
2 152 THRWS33 Y ABC 100
3 149 WADADJTH4 N ABC 5
4 149 WADADJTH5 N ABC 6
Я пытаюсь показать для MSISDN будет product_name, который является обязательным, как (whoadjth2, whoadjth5, whoadjth4) и product_names THRWS31, THRWS32, THRWS33 не являются обязательными, если они существуют base_soc_boo флаг показан как включен, и в противном случае «N»
, когда я пытался ниже SQL я получаю выход, который я очень близко
SELECT flex.msisdn,
flex.product_name Flex_Soc,
CASE
WHEN base.product_name IN ('THRWS33', 'THRWS32', 'THRWS31')
AND base.base_soc_boo = 'Y'
THEN base.product_name
WHEN flex.product_name NOT IN ('THRWS33', 'THRWS32', 'THRWS31')
AND flex.base_soc_boo = 'N'
THEN 'Not Prov'
END base_soc,
flex.plan_name,
flex.limit
FROM table1,
(SELECT b.product_name,
b.plan_name,
b.msisdn,
b.base_soc_boo
FROM table1 b
WHERE product_name IN ('THRWS33', 'THRWS32', 'THRWS31')
AND b.base_soc_boo IN ('Y')
)base
WHERE flex.product_name <> base.product_name
AND flex.plan_name = base.plan_name
AND flex.base_soc_boo IN ('N','Y')
выход:
MSISDN FLEX_SOC BASE_SOC PLAN_NAME Limit
1 152 WHOADJTH2 THRWS33 ABC 10
2 152 WADADJTH5 THRWS33 ABC 20
3 149 WADADJTH4 THRWS31 ABC 5
4 149 WADADJTH5 THRWS31 ABC 6
для 149, где флаг base_soc_boo является необходимость «N», чтобы отображаться как «Не Предоставлен»
Очень трудно читать с этими странными именами. –
таблица1 действительно гибкая? в противном случае, когда схема таблицы входит в игру, я не вижу таблицу «FLEX» в любом месте предложения from. Итак, каков желаемый результат? – xQbert
да таблица1 - это гибкий. его ошибка typo Должно быть что-то вроде this table1 flex –