2016-05-16 116 views
1

我有兩個表。T-SQL比較兩個表值

第一個表:

Name  Cost 
house 1 10000 
house 2 5000 
house 3 100 

二表:

Type From  To 
A 1.00  1000.00 
B 1000.10 10000.00 
С 10000.10 100000.00 

如何構建應該看起來像第三個表。

Name  Cost Type 
house 1 10000 C 
house 2 5000 B 
house 3 100 A 
+1

'房子1'應該是B型 – lad2025

+0

如果房子的價格是10000.05?它在第二個表中沒有對應的類型? – GarethD

+0

@GarethD這可能是他可以接受的特殊要求,但我也有問題。我會爲可能想要涵蓋這個潛在未來「漏洞」的人們發佈一個備選答案。 –

回答

1

你可以使用:

SELECT t.*, r.Type 
FROM t   -- first table 
LEFT JOIN r  -- second table 
    ON t.Cost BETWEEN r.[From] AND r.[To]; 

LiveDemo

0

對於案件時精度是不確定的,例如從一個計算或日期時間小數,您可以使用「鍵入'表格與一個單一的閾值。

Type From 
A 1.00 
B 1000.10 
С 10000.10 

Select T1.Name, T1.Cost, Table2.Type 
    From 
     (
     Select [From] Threshold, IsNull(Lead(From) Over (Order By From), (Some max value maybe 100000000)) NextThreshold 
      From Table2) T2 
    Join Table1 T1 On T1.Cost >= T2.Threshold And T1.Cost < T2.NextThreshold