如何从每一行的总和= @Number

时间:2019-07-03 19:17:25

标签: sql

我有一个已知的数字x和几个命名的列(ix,col1,col2,col3),并且需要从每行(不一定是同一列)的col1,col2或col3中选择一个值,总数加到已知数x。我很难解决这个问题的逻辑。

使用列中的数字不可能有多个结果集,但是必须返回每一行中的一列,返回的所有列的总和为数字X。

理想情况是:

选择*作为结果 从表 总和(结果)=数字

但是我不能在sum语句中使用*,并且有可能从每一列返回一个以上的结果(尽管位于单独的行中)。所以我无法选择col1,col2 col3等

1 个答案:

答案 0 :(得分:0)

您可以运行多个select语句并每次指定不同的条件。

SELECT FirstColumn,
       SecondColumn
FROM [Table]
WHERE FirstColumn + SecondColumn = x
UNION
SELECT SecondColumn,
       ThirdColumn
FROM [Table]
WHERE SecondColumn + ThirdColumn = x
UNION
SELECT FirstColumn,
       ThirdColumn
FROM [Table]
WHERE FirstColumn + ThirdColumn = x

或使用CASE...WHEN,然后按条件过滤以忽略空结果。 Case返回单个结果,因此您需要重复大小写条件以返回不同的列:

SELECT CASE
           WHEN FirstColumn + SecondColumn = x THEN FirstColumn
           WHEN SecondColumn + ThirdColumn = x THEN SecondColumn
           WHEN FirstColumn + ThirdColumn = x THEN FirstColumn
       END AS FirstMatch,
       CASE
           WHEN FirstColumn + SecondColumn = x THEN SecondColumn
           WHEN SecondColumn + ThirdColumn = x THEN ThirdColumn
           WHEN FirstColumn + ThirdColumn = x THEN ThirdColumn
       END AS SecondMatch
FROM [Table]
WHERE FirstColumn + SecondColumn = x
  OR SecondColumn + ThirdColumn = x
  OR FirstColumn + ThirdColumn = x