#sql-server
#sql-server
Вопрос:
Этот подзапрос является частью большого запроса.
...
CASE WHEN tx.call_id IS NULL THEN 0 ELSE 1 END AS 'Transfer',
CASE WHEN AT.VALUE IS NULL THEN
(
SELECT top 1 product_type FROM [mci].[dbo].[f3_leads_file] WHERE alt_id = '00'
calls.memberid
UNION
SELECT top 1 'DGU' AS product_type FROM [dbo].[stg_call_routing_data] WHERE alt_id =
calls.memberid
)
ELSE AT.VALUE END AS product_type
FROM dbo.cust_call_data AS calls
...
Обратите внимание на 2-й оператор case, который имеет ОБЪЕДИНЕНИЕ.
SELECT top 1 product_type FROM [mci].[dbo].[f3_leads_file] WHERE alt_id = '00'
calls.memberid
Первый select может возвращать product_type как один из следующих: «DGU», «MYW» или «HUA».
Мы хотим, чтобы этот первый выбор возвращал HUA, а затем использовал это (оно имеет приоритет). Если возвращаемое значение равно MYW, тогда используйте DGU, иначе используйте DGU.
Я думаю, что ОБЪЕДИНЕНИЕ здесь вообще не помогает, и я должен изменить его на приведенный ниже код (но тогда как мне с этим справиться, когда значение равно MYW).
...
CASE WHEN tx.call_id IS NULL THEN 0 ELSE 1 END AS 'Transfer',
CASE WHEN AT.VALUE IS NULL THEN
SELECT top 1 product_type FROM [mci].[dbo].[f3_leads_file] WHERE alt_id = '00'
calls.memberid
ELSE AT.VALUE END AS product_type
FROM dbo.cust_call_data AS calls
...
Ответ №1:
На основе приведенных ниже инструкций:
Первый select может возвращать product_type как один из следующих: «DGU», «MYW» или «HUA».
Мы хотим, чтобы этот первый выбор возвращал HUA, а затем использовал это (оно имеет приоритет). Если возвращаемое значение равно MYW, тогда используйте DGU, иначе используйте DGU.
Вы хотите вернуть HUA
, когда тип продукта HUA
во всех остальных случаях возвращается DGU
CASE WHEN AT.VALUE IS NULL THEN (
SELECT TOP 1 IIF(product_type = 'HUA', 'HUA', 'DGU')
FROM [mci].[dbo].[f3_leads_file]
WHERE alt_id = '00' calls.memberid
)
Комментарии:
1. Спасибо. Я попробую это.