基于两列值选择单行

时间:2018-12-01 19:49:26

标签: sql sql-server sql-server-2016

我有以下数据:

MyData

我不确定图像是否正确粘贴,但是我也将粘贴数据,请耐心等待。

ID  AccountCodeID   CarrierServiceID    Priority    IsDefault
173    480                72                1             1
176    480                71                0             0
177    481                 4                0             0

从以上结果中,我只想基于IsDefault和Priority列值为 AccountCodeID 480 选择一行。

IsDefault TRUE (1)时,我要选择该行,否则我要选择优先级为0的行(默认情况下,0为高优先级)未指定)。

单个查询是否可能?如果是这样,我该如何实现?

2 个答案:

答案 0 :(得分:1)

除了MySQL以外,几乎适用于所有其他内容...

WITH
  prioritised AS
(
  SELECT
    *, 
    ROW_NUMBER() OVER (PARTITION BY AccountCodeCarrierID_FK
                           ORDER BY IsDefault DESC, Priority ASC
                      ) 
                        AS priorityOrder
  FROM
    yourTable
) 
SELECT
  *
FROM
  prioritised
WHERE
  priorityOrder = 1

答案 1 :(得分:0)

尝试以下方法:

 Select Top 1 from Table1 order by IsDefault DESC, Priority ASC