2014-04-06 159 views
-1

我有兩個表,我想根據一個字段合併他們的行。我將不勝感激此任務的簡單SQL代碼。例如,
table1。所謂:餘額
合併兩個表的行

PubID | Year | StudID |DrAmt| CrAmt| Desc| 
------------------------------------------ 
12 | 2012 | OK1 | 100 | 0 | Bal c/f 
11 | 2012 | OK2 | 250 | 0 | Bal c/f 
10 | 2012 | OK3 | 0 | 50 | Bal c/f 
12 | 2012 | OK4 | 10 | 0 | Bal c/f 


表2。所謂:balances_detail

PubID | Items  | DrAmt | CrAmt| 
----------------------------------- 
12 | Stationary | 10 | 0 
12 | Pendrive | 30 | 0 
12 | Utility | 40 | 0 
11 | Stationary | 5  | 0 
11 | Pendrive | 30 | 0 
11 | Utility | 10 | 0 

等。
我現在想得到像這張表一樣的結果。這個表包含studID和它的bal c/f以及分別給每個PubID的balances_detail。我只需要一個DrAmt柱和一個CrAmt列其中將包含來自這兩個表和Desc列,以及:

PubID | Year | StudID |DrAmt| CrAmt| Desc| 
------------------------------------------ 
12 | 2012 | OK1 | 100 | 0 | Bal c/f 
12 | 2012 | OK1 | 10 | 0 | Stationary 
12 | 2012 | OK1 | 30 | 0 | Pendrive 
12 | 2012 | OK1 | 40 | 0 | Utility 
11 | 2012 | OK2 | 250 | 0 | Bal c/f 
11 | 2012 | OK2 | 5 | 0 | Stationary 
11 | 2012 | OK2 | 30 | 0 | Pendrive 
11 | 2012 | OK2 | 10 | 0 | Utility 
+0

請出示您的嘗試。 –

+0

@Mitch,我的嘗試無法產生任何結果,挑戰來自兩張表中的DrAmt和CrAmt。我只需要一個DrAmt列和一個CrAmt列,它將包含兩個表中的行。 – Akeown

回答

0

您是否在尋找

SELECT b.PubID, a.Year, a.StudID, b.DrAmt, b.CrAmt, b.Items AS Description 
    FROM Table2 b 
    JOIN Table1 a ON a.PubID=b.PubID 
    UNION 
    SELECT a.PubID, a.Year, a.StudID, a.DrAmt, a.CrAmt, a.Description 
    FROM Table1 a 
    ORDER BY 1,2,3 
0

據我所知行,你不能合併這兩個表,因爲生成表有兩列:

StudID 
Desc 

哪一個不是balances_detail表的一部分。如果這兩個列balances_detail表的一部分,那麼你可以使用在有約束的SQL語句Union關鍵字:

注意,在聯盟內的每個SELECT語句必須具有相同的 列數。這些列也必須具有相似的數據類型。 另外,每個SELECT語句中的列必須以相同的順序排列。

請看看這個link閱讀有關 '聯盟' 關鍵字