Проблема соединения двух таблиц - PullRequest
1 голос
/ 11 февраля 2010

Table1

ID Date

001 01/02/2009
001 02/02/2009
...
...
001 28/02/2009
002 01/02/2009
002 02/02/2009
...
...
002 28/02/2009

Table2

ID Date Salary

001 02/02/2009 800
001 25/02/2009 500
002 01/02/2009 300
...,

Я хочу объединить два стола

Пробный запрос

SELECT table1.id, table1.date, table2.salary 
FROM table1 
LEFT OUTER JOIN table2 ON
table1.id = table2.id AND table1.date = table2.date

Результат

Id Date Salary

001 02/02/2009 800
001 25/02/2009 500
002 01/02/2009 300

Я хочу отобразить результат, такой как весь идентификатор, дата из таблицы1 и зарплата из таблицы2, где table1.date = table2.date

Ожидаемый результат

ID Date Salary

001 01/02/2009 
001 02/02/2009 800
001 03/02/2009 
...
...
001 25/02/2009 500
...
001 28/02/2009 
002 01/02/2009 300
002 02/02/2009 
...
...
002 28/02/2009 
...

Как сделать запрос в SQL

Нужна помощь по запросу

1 Ответ

2 голосов
/ 11 февраля 2010

В качестве теста я использовал предоставленные вами данные и запрос, которые дали следующий результат.

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

Результат

id          date                    salary
----------- ----------------------- -----------
1           2009-02-01 00:00:00.000 NULL
1           2009-02-02 00:00:00.000 800
1           2009-02-28 00:00:00.000 NULL
2           2009-02-01 00:00:00.000 300
2           2009-02-02 00:00:00.000 NULL
2           2009-02-28 00:00:00.000 NULL

Сценарий

DECLARE @Table1 TABLE (ID INTEGER, Date DATETIME)
DECLARE @Table2 TABLE (ID INTEGER, Date DATETIME, Salary INTEGER)

INSERT INTO @Table1 VALUES (001, '02/01/2009')
INSERT INTO @Table1 VALUES (001, '02/02/2009')
INSERT INTO @Table1 VALUES (001, '02/28/2009')
INSERT INTO @Table1 VALUES (002, '02/01/2009')
INSERT INTO @Table1 VALUES (002, '02/02/2009')
INSERT INTO @Table1 VALUES (002, '02/28/2009')

INSERT INTO @Table2 VALUES (001, '02/02/2009', 800)
INSERT INTO @Table2 VALUES (001, '02/25/2009', 500)
INSERT INTO @Table2 VALUES (002, '02/01/2009', 300)


Select  table1.id, table1.date, table2.salary 
from    @table1 table1
        left outer join @table2 table2 on table1.id = table2.id and table1.date = table2.date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...