Я пытаюсь написать SQL-запрос, где я соединяю две таблицы и извлекаю несколько столбцов. Как только это будет сделано, на основе двух полей (перечисление исходной таблицы, идентификатора в соответствующей исходной таблице), мне нужно получить значение, соответствующее идентификатору в исходной таблице.Вложенные запросы sql внутри футляра
Вопрос заключается в том, что я не могу объединить все исходные таблицы, и вы хотите сделать что-то вроде этого:
Select
X.Col1,
X.Col2,
Y.Col1,
Y.Col2,
CASE
WHEN Y.TableID = 4 THEN Select t4.Col1 FROM TableFour t4 WHERE t4.id = Y.FileID
WHEN Y.TableID = 5 THEN Select t5.Col4 FROM TableFive t5 WHERE t5.id = Y.FileID
END
FROM Table X INNER JOIN Table Y ON X.ID = Y.XID
Я могу гарантировать значение, извлекаемых из всех исходных таблиц будет одинаковым (т.е. NVARCHAR).
Вложенные SQL-запросы внутри оператора CASE, похоже, не работают, я бросаю его вам, ребята. Любые идеи с этой проблемой?
Надеюсь, я правильно объяснил вопрос. Если вы не уверены, сделайте комментарий, чтобы я мог его прояснить.
Приветствия заранее!
MSSQL Server 2008 –
Я не понимаю, что вы имеете в виду под «не может объединить все исходные таблицы», вы можете уточнить? –
@AlexKuznetsov: Вероятно, что присоединение к этим таблицам вводит дополнительные строки, которые OP не хочет в конечном наборе результатов ... –