Запрос двух таблиц с одинаковыми столбцами - PullRequest
0 голосов
/ 18 августа 2011

У меня есть две таблицы в базе данных SQL Server: table1 и table2

table1:

 DATE        NAME    CREDIT
 1/1/2011    BALU      100 
 1/3/2011    BALU      200 

table2:

 DATE        NAME    DEBIT
 1/2/2011    BALU      100 
 1/3/2011    BALU       50 

Я хочучтобы отобразить отчет в следующем формате:

 DATE        NAME    CREDIT  DEBIT
 1/1/2011    BALU      100      0
 1/2/2011    BALU        0    100
 1/3/2011    BALU      200     50

Моя проблема заключается в том, что в обеих таблицах есть столбец date.

Как написать оператор SELECT с предложением WHERE, если обе таблицы имеют один и тот же столбец с именем date?

Ответы [ 5 ]

3 голосов
/ 18 августа 2011

Я все еще не уверен в том, что вы хотите, некоторые детали отсутствуют.Но, основываясь на опыте работы с подобными запросами, я думаю, это то, что вам может понадобиться (или достаточно близко)

3 голосов
/ 18 августа 2011

Если я правильно понимаю ваш вопрос, это то, что вы хотите:

SELECT  ISNULL(T1.Date,T2.Date) Date, ISNULL(T1.Name,T2.Name) Name, 
        ISNULL(T1.Credit,0) Credit, ISNULL(T2.Debit,0) Debit
FROM table1 T1
FULL JOIN table2 T2
ON T1.Date = T2.Date AND T1.Name = T2.Name
2 голосов
/ 18 августа 2011
SELECT COALESCE(t1.[DATE], t2.[DATE]) [DATE], 
    COALESCE(t1.[NAME], t2.[NAME]) [NAME], 
    COALESCE(t1.[CREDIT], 0) [CREDIT], 
    COALESCE(t2.[DEBIT], 0) [DEBIT]
  FROM Table1 t1
  FULL JOIN Table2 t2 
    ON (t1.[DATE] = t2.[DATE]) AND (t1.[NAME] = t2.[NAME])
0 голосов
/ 18 августа 2011

Так как вы не указываете, какая дата является первой между и FK связывает обе таблицы, я буду считать ..

 select ta.date, ta.name, ta.credit, tb.debit from table1 ta
 join table2 tb as (ta.name = tb.name)
 where ta.date between tb.date
0 голосов
/ 18 августа 2011

Полагаю, вы ищете функцию datediff в sql.http://msdn.microsoft.com/fr-fr/library/ms189794.aspx Тем не менее, я могу ошибаться, поскольку ваш вопрос четко не сформулирован.

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