2011-08-18 92 views
-1

我有一個SQL Server數據庫中的兩個表:table1table2查詢有命名的列兩個表相同的

表1:

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

表2:

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的列?

+1

請註明您所面臨的問題,並澄清你的問題。你明顯的問題不符合你的標題或者不清楚。 – AJC

+0

現在你可以理解我的問題了嗎? –

+0

我添加了SUM操作,假設在同一天可能有多個貸記或借記操作。 (我也假設你只使用DATE部分而不是TIME)。 – AJC

回答

3

我仍然不看好你想,有幾個細節失蹤。但基於在類似查詢中工作的經驗,我認爲這是您可能需要的(或足夠接近的)。

SELECT ISNULL(C.DATE, D.DATE) DATE, ISNULL(C.NAME, D.NAME) NAME, SUM(C.CREDIT) CREDIT, SUM(D.DEBIT) DEBIT 
FROM TABLE_1 C 
FULL JOIN TABLE2 D ON D.DATE=C.DATE AND D.NAME=C.NAME 
WHERE ISNULL(C.DATE, D.DATE) BETWEEN @DATE1 AND @DATE2 
GROUP BY C.DATE, D.DATE, C.NAME, D.NAME 
+0

感謝您的回覆。這qry解決了我的問題。對不起,我的英語不好。 –

+0

當然,英語也不是我的母語......很高興我能幫上忙。 – AJC

0

既然你不指定日期是先在之間和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

這是我的問題兩個表都有日期列上面的例子table1交易是日期1和3 table2交易是日期2和3所以我如何正確顯示日期。當我執行用戶qry我得到正確的結果? –

3

如果我正確理解你的問題,THI是你想要什麼:

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 
+0

對不起,它顯示重複的記錄 –

2
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]) 
+1

啊,你讓我一分鐘。 –

+0

對不起,以上qry返回重複記錄 –

相關問題