我有一个已知的数字x和几个命名的列(ix,col1,col2,col3),并且需要从每行(不一定是同一列)的col1,col2或col3中选择一个值,总数加到已知数x。我很难解决这个问题的逻辑。
使用列中的数字不可能有多个结果集,但是必须返回每一行中的一列,返回的所有列的总和为数字X。
理想情况是:
选择*作为结果 从表 总和(结果)=数字
但是我不能在sum语句中使用*,并且有可能从每一列返回一个以上的结果(尽管位于单独的行中)。所以我无法选择col1,col2 col3等
答案 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