2016-05-16 10 views
1

私は2つのテーブルを持っています。T-SQLは2つのテーブルの値を比較します

まずテーブル:

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かかりますか? 2番目のテーブルには対応するタイプがありませんか? – 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

をケースでは精度が不確定であるとき、例えば計算や日付時刻から小数点では、使用することができます " 1つのしきい値を持つ「タイプ」テーブル。

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 
関連する問題