SQL Server SELECT вложенный - PullRequest
       19

SQL Server SELECT вложенный

1 голос
/ 06 февраля 2012

Я хочу сделать следующие два результата запроса A и B в двух column_A и column_B. Я пытаюсь следовать логике, но она не работает в SQL Server 2008 R2

select Column_A, Column_B

From (

SQL query for A

,

SQL query for B

)

Может ли кто-нибудь проверить, правильна ли моя логика или нет?

Ответы [ 2 ]

3 голосов
/ 06 февраля 2012

Если вы хотите получить скалярный результат, сделайте следующее:

SELECT
  (<sub-query for value A>) Column_A,
  (<sub-query for value B>) Column_B
;

Для скалярных наборов результатов вам нужно убедиться, что всегда возвращает только одно значение, иначе запрос не будет выполнен во время выполнения.

Если вы действительно хотите использовать подзапросы, вам нужно назвать их:

SELECT Column_A, Column_B
FROM (<sub-query A>) AS A,
     (<sub-query B>) AS B

... и вам понадобится условие JOIN или предложение WHERE для правильного объединения таблиц.

2 голосов
/ 06 февраля 2012

Вы можете вкладывать выбранные запросы следующим образом

SELECT A.Column, B.Column
FROM
    (SELECT Column FROM table1 ...) A
    INNER JOIN
    (SELECT Column FROM table2 ...) B
    ON A.id = B.id

Это объединяет строки одного источника данных (таблицы или подзапроса) со строками другого.Если вы делаете запрос из нескольких источников данных, вам, как правило, придется каким-то образом присоединиться к ним.Если вы этого не сделаете, вы получите декартово произведение, которое объединяет каждую строку одного источника с каждой строкой другого источника.

...