Установите переменную на основе оператора IF в SQL Manager - PullRequest
0 голосов
/ 25 января 2019

У меня есть таблица с именем Ordhdr, я хочу создать запрос на основе столбца [status] этой таблицы. У меня есть много статусов, которые я хочу сгруппировать в Won, Lost, Pending для более удобного просмотра. Как установить объявление, установить для оператора сначала «переименовать» текущий статус в WON, LOST или PENDING, чтобы я мог затем отобразить результаты своего запроса, используя новое имя.

Sample Data
Order 1, STatus is QteCall1 (Pending Status)
Order 2, Status is Converted (Won Status)
Order 3, STatus is Declined (Dead Status)
Order 4, Status is Waiting (Pending Status)
Order 5, Status is NOResponse (Dead Status)'

как бы я "переименовал" текущий статус, чтобы получить результаты показавший счет

  • 1 выиграл
  • 2 в ожидании
  • 2 мертвых

1 Ответ

0 голосов
/ 25 января 2019

Это то, что вам нужно?

SELECT CASE WHEN STATUS = 'Converted' THEN 'WON' 
            WHEN STATUS IN ('QteCall1','Waiting') THEN 'PENDING'
            WHEN STATUS IN ('Declined', 'NOResponse ') THEN 'LOST' END AS NEW_NAME
            --The above case expression is being used to compare and rename the values according to the desired match
        ,COUNT(*) AS COUNT
    FROM Ordhdr
    GROUP BY 
        CASE WHEN STATUS = 'Converted' THEN 'WON' 
            WHEN STATUS IN ('QteCall1','Waiting') THEN 'PENDING'
            WHEN STATUS IN ('Declined', 'NOResponse ') THEN 'LOST' END
            -- This second case expression is the same as the previous one, but it is required by the SQL standards to be in the GROUP BY section

Результат запроса.

...