2016-05-16 73 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