比较具有特定顺序的多个值的列

时间:2015-02-07 19:09:57

标签: sql-server

我需要比较具有多个值的列,但需要按特定顺序进行比较。

例如:如果值为AA,BB,CC,DD。

我的查询应该是这样,它首先将AA与第一列比较,而不是BB,CC和DD。

这是我的查询,假设CASE WHEN ELSE按指定的顺序执行WHEN条件:

SELECT RegionID FROM WotifRegions WHERE SiteID = @SiteID AND 
    1 = CASE
          WHEN LocationName = @DepotCity THEN 1
          WHEN LocationName = @DepotName THEN 1
          WHEN LocationName = @LocationCity THEN 1
          WHEN LocationName = @LocationName THEN 1
          ELSE 0
        END

如果错了,请告诉我,有更好的方法。 仅供参考:它是一张小桌子。

1 个答案:

答案 0 :(得分:2)

您也可以这样做:

SELECT RegionID FROM WotifRegions WHERE SiteID = @SiteID AND 
     (LocationName = @DepotCity or
      LocationName = @DepotName or
      LocationName = @LocationCity or
      LocationName = @LocationName)

或者它只是具有多个值的一个字段:

SELECT RegionID FROM WotifRegions WHERE SiteID = @SiteID AND 
LocationName in (@DepotCity, @DepotName, @LocationCity, @LocationName)

如果您实际上也意味着按顺序对数据进行排序,那么就像这样:

SELECT RegionID FROM WotifRegions 
WHERE SiteID = @SiteID AND 
LocationName in (@DepotCity, @DepotName, @LocationCity, @LocationName)
order by CASE
      WHEN LocationName = @DepotCity THEN 1
      WHEN LocationName = @DepotName THEN 2
      WHEN LocationName = @LocationCity THEN 3
      WHEN LocationName = @LocationName THEN 4
      ELSE 5 end

如果您只需要第一个,那么添加“前1”。