powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как реализовать CASE при JOIN?
4 сообщений из 4, страница 1 из 1
Как реализовать CASE при JOIN?
    #32005791
Alexandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда... бувают в жизни огорчения. При выполнении кода типа

SELECT SUM(C.X) FROM A
INNER JOIN B
ON A.ID=B.ID
INNER JOIN C
ON B.ID=C.ID AND B.ID1=C.ID1
В последней строке мне необходимо менять параметры присоединения по типу
INNER JOIN C
ON (CASE WHEN B.ID2=1
THEN B.ID=C.ID AND B.ID1=C.ID1
ELSE B.ID=C.ID AND C.ID1=B.ID2
END)
При попытке создать подобное SQL ругается, что ничего не понимает...
Я тоже ничего не понимаю... Например, как это условие можно реализовать...
...
Рейтинг: 0 / 0
Как реализовать CASE при JOIN?
    #32005792
INNER JOIN C ON (
CASE WHEN B.ID2=1 THEN B.ID=C.ID AND B.ID1=C.ID1
ELSE B.ID=C.ID AND C.ID1=B.ID2
END)

( B.ID2 = 1 and B.ID=C.ID AND B.ID1=C.ID1) or ( B.ID2 != 1 and B.ID=C.ID AND C.ID1=B.ID2 )

Удачи
...
Рейтинг: 0 / 0
Как реализовать CASE при JOIN?
    #32005793
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так попробовать
SELECT SUM(C.X) FROM A
INNER JOIN B
ON A.ID=B.ID
INNER JOIN C
ON B.ID=C.ID AND C.ID1 = CASE WHEN B.ID2=1 THEN B.ID1 ELSE B.ID2 END

Во всяком случае у меня на SQL2000 это работает
...
Рейтинг: 0 / 0
Как реализовать CASE при JOIN?
    #32005797
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Alexandr

Ничего удивительного. В TQSL нет такого типа как boolean, а case возвращает некое значение, которое и надо с чем-то сравнивать, что бы использовать после ON.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как реализовать CASE при JOIN?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]