我有以下数据:
我不确定图像是否正确粘贴,但是我也将粘贴数据,请耐心等待。
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为高优先级)未指定)。
单个查询是否可能?如果是这样,我该如何实现?
答案 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