T-SQL比较两个表值

时间:2016-05-16 14:33:04

标签: sql-server tsql

我有两张桌子。

第一张表:

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

2 个答案:

答案 0 :(得分:1)

您可以使用:

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

LiveDemo

答案 1 :(得分: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