2016-01-21 56 views
0

我的兩個表相同的三列字段兩個表中選擇無主鍵,但有相同的三列field.I從兩個表中選擇並出來的結果類似以下內容:從沒有主鍵,但在SQL

表1:

No Code Row Price 
001 0001 1  100 
001 0001 2  200 
002 0001 1  300 

表2:

No Code Row Qty Date 
001 0001 1  10  2016 
001 0001 2  20  2017 

結果表:

No Code Row Price Qty Date Row2 
001 0001 1  100  10  2016 1 
001 0001 1  100  10  2016 2 
001 0001 2  200  20  2017 1 
001 0001 2  200  20  2017 2 

我的SQL:

Select 
T2.No,T2.Code,T2.Row,T1.Price,T2.Qty,T2.Date,T1.Row as Row2 
From Table1 T1 JOIN Table2 T2 
On T1.No = T2.No 
And T1.Code = T2.Code 
Order by T2.Code,T1.Row 

我想結果出來是這樣的:

No Code Row Price Qty Date Row2 
001 0001 1  100  10  2016 1 
001 0001 2  200  20  2017 2 

我應該寫什麼SQL?請指教我..我是SQL新手。 如果我修改查詢是這樣的:

Select 
T2.No,T2.Code,T2.Row,T1.Price,T2.Qty,T2.Date,T1.Row as Row2 
From Table1 T1 JOIN Table2 T2 
On T1.No = T2.No 
And T1.Code = T2.Code 
And T1.Row = T2.Row 
Order by T2.Code,T1.Row 

它出來什麼...... 請幫助我。

謝謝先進。

+1

您使用的是MYSQL還是SQL Server?它不能兼而有之。 –

+0

你可以嘗試分別註釋每個條件。有可能這些值實際上並不完全匹配,但只是看起來匹配。 –

+1

我不知道發生了什麼事情,但您的修改後的查詢[適用於我](http://sqlfiddle.com/#!9/e72fc/2)給出您的示例數據。你想匹配NULL嗎? 「T1.Row」和「T2.Row」的數據類型是否兼容? –

回答

2

使用左連接將解決您的問題。

SELECT T2.No,T2.Code,T2.Row,T1.Price,T2.Qty,T2.Date,T1.Row as Row2 
FROM Table2 T2 
LEFT JOIN Table1 T1 ON T1.No = T2.No 
    And T1.Code = T2.Code 
    And T1.Row = T2.Row 
ORDER BY T2.Code,T1.Row 
+0

左連接對我無效。它出來表2的數據都是空的。 – Yuki

0

如果您正在使用SQL Server嘗試此查詢

Select * from 
(
Select *,row_number()over(partition by date order by no) as row2 from 
(
Select 
Tbl1.*,tbl2.qty,tbl2.date 
From tbl1 inner join tbl2 on tbl.no=tbl2.no 
) as ab 
)as bc where row2=1 

我希望這會幫助你。