需要一种更好的方法来将一个列值与同一 table 行中的多个列值进行比较

Need a better way to compare one column value to many column values in the same table row

我有一个 SQL 2017 年的数据table 结构如下:

A 1 2 3
5 10 0 0
2 0 1 0

出于报告目的,我需要一个 TSQL 查询来遍历每一行,从 A 列中获取值,并将其与第 1-3 列中的每个值进行比较。如果 col A 的值大于 col [x] 的值,则应迭代计数器。当该行的所有比较都完成后,我记录计数器的最终值,然后冲洗并重复下一行。

逐个单元地执行此过程 RBAR 是行不通的。我的实际 table 有 300 多行和 15 列应与初始值进行比较。任何人都可以建议更好的方法吗?

我们可以在这里使用CASE表达式:

SELECT *, CASE WHEN A > [1] THEN 1 ELSE 0 END +
          CASE WHEN A > [2] THEN 1 ELSE 0 END +
          CASE WHEN A > [3] THEN 1 ELSE 0 END AS counter
FROM yourTable;