как соединиться с функцией IIF? - PullRequest
1 голос
/ 12 января 2020

Привет! Я использую MS SQL 2017 и пытаюсь выяснить, как работает этот код

DECLARE @customer TABLE (

    credithold bit,
    id int primary key, 
    deliverycityID int,
    postalcityID int
)
DECLARE @city TABLE (

    cityid int primary key, 
    pop bigint
)
INSERT INTO @city VALUES (1,2666),(2,7889),(3,28917)
INSERT INTO @customer VALUES(1,1,2,1),(0,2,3,2),(1,3,1,3),(0,4,2,3)

SELECT c1.id, pop, IIF(credithold = 0, deliverycityID, postalcityID) as cityid
FROM @customer c1
INNER JOIN @city AS A ON A.cityid = cityid 

Код дает результат типа (https://i.stack.imgur.com/qxs2G.png) enter image description here Но я думаю, что он должен вернуться вот так (https://i.stack.imgur.com/x3B19.png) https://i.stack.imgur.com/x3B19.pngenter image description here Любой совет? Спасибо!

Извините за изображение. Я не могу опубликовать изображение напрямую из-за недостаточной репутации.

1 Ответ

0 голосов
/ 12 января 2020

Правильное объединение, сделав это, просто сделайте это:

SELECT c1.id, pop, IIF(credithold = 0, deliverycityID, postalcityID) as cityid
FROM @customer c1
INNER JOIN @city AS A ON A.cityid = IIF(credithold = 0, deliverycityID, postalcityID)
...