从SQL Server 2008中的范围内返回值

时间:2012-08-21 06:06:09

标签: sql-server-2008 select

我有两个表,一个包含成员和表。他们的卡号和出口表,用于识别每个插座的卡号范围。我想知道会员所属的卡号是哪个商店。

会员表

MemberID    Cardnumber    FirstName   LastName
1           123456123     John        Doe
2           123456245     Sarah       Smith

奥特莱斯表

OutletID    OutletName      StartCardNumber     EndCardNumber
1           Balmain Store   123456100           123456200
2           Sydney Store    123456201           123456300

我想不出一个脚本,我可以带回以下信息而不必 首先创建一个临时表。有更简单的方法吗?

CardNumber  FirstName LastName   OutletName
123456123   John      Doe        Balmain Store
123456245   Sarah     Smith      Sydney Store

1 个答案:

答案 0 :(得分:2)

这很简单。除了均等之外,你还使用不等式加入一个范围。

SELECT
   M.CardNumber,
   M.FirstName,
   M.LastName,
   O.OutletName
FROM
   dbo.Members M
   INNER JOIN dbo.Outlets O
      ON M.CardNumber >= O.StartCardNumber
      AND M.CardNumber <= O.EndCardNumber

这与M.CardNumber BETWEEN O.StartCardNumber AND O.EndCardNumber相同,但我想使用>=<=绘制您的方案的包容性端点。 BETWEEN并不总是合适的,因为最终值通常需要<,但在这种情况下不是。

Try this out right now online