2012-04-04 2 views
1

я следующие выберите результаты:SQL Server Выберите Присоединиться?

Select t1.ID, t1.Value1 
from t1 
where t1.ID=1 

Результат:

ID Value1 
    1 val1 
    1 val2 
    1 val3 
    1 val4 

и

Select t2.ID, t2.Value2 
from t2 where t2.ID = 1 

Результат 2:

ID Value2 
    1 val5 
    1 val6 
    1 val7 
    1 val8 

и я хочу, чтобы получить, как:

ID Value1 Value2 
1 val1 val5 
1 val2 val6 
1 val3 val7 
1 val4 val8 

Как я могу получить этот результат?

+1

Почему все идентичные поля идентичны? – Oded

+0

Первые 2 результата получены из: Выберите t1.ID, t1.Value1 из t1, где t1.ID = 1 и выберите t2.ID, t2.Value2 из t2, где t2.ID = 1 – Lavy

+2

Please _edit_ the_question_, чтобы добавить подробную информацию , Комментарии - это плохое место для этого. – Oded

ответ

3

я должен был взять на себя немного о том, что вы хотите, основываясь на результатах, но я думаю, что следующий будет работать:

;WITH CTE1 AS 
( SELECT ID, Value1, ROW_NUMBER() OVER(ORDER BY Value1) [RowNumber] 
    FROM t1 
), CTE2 AS 
( SELECT ID, Value2, ROW_NUMBER() OVER(ORDER BY Value2) [RowNumber] 
    FROM t2 
) 
SELECT COALESCE(CTE1.ID, CTE2.ID) [ID], 
     Value1, 
     Value2 
FROM CTE1 
     FULL JOIN CTE2 
      ON CTE1.ID = CTE2.ID 
      AND CTE1.RowNumber = CTE2.RowNumber 

FULL JOIN может быть заменен LEFT JOIN или INNER JOIN В зависимости от конкретной требования.

+0

Спасибо. Он работает! – Lavy

2
SELECT t1.ID, t1.Value1, t2.Value2 FROM t1 
INNER JOIN t2 ON t2.ID = t1.ID 
WHERE t1.ID=1 
+0

Спасибо, но не будет работать .Это получить ID Value1 Value2 1 знач1 val5 1 val2 val5 1 val3 val5 1 val4 val5 1 знач1 val6 1 val2 val6 1 val3 val6 1 val4 val6 и так далее для каждая строка в t2 – Lavy

0

Надежды так один из внешнего соединения поможет вам решить вашу проблему

ВЫБРАТЬ t1.ID, t1.Value1, t2.Value2 FROM t1 правого внешнего соединения t2 ON t2.ID = t1.ID где t1 .ID = 1

Смежные вопросы