当前位置: 首页 > 知识库问答 >
问题:

如何从sum=@number的每行中的一个未知列中选择一个结果

丁学
2023-03-14

我有一个已知的数字x和几个命名的列(ix,col1,col2,col3),需要从每行(不一定是同一列)的col1,col2或col3中选择一个值,其中总数加起来就是已知的数字x。我很难弄清楚这件事的逻辑。

但是,我不能在sum语句中使用*,而且可能会返回来自每列的多个结果(尽管在不同的行中)。所以我不能选择col1,col2,col3等

共有1个答案

包兴思
2023-03-14

您可以运行多个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返回单个结果,因此需要重复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
 类似资料:
  • 问题内容: 表格如下: 我想获取班级列表,以及每个班级-属于每个班级的学生人数。我怎样才能做到这一点? 问题答案: 您需要这样做-

  • 问题内容: 我有一个生成的DataFrame,如下所示: 结果如下: 如您所见,DataFrame按升序排列,然后按降序排列。 我想选择每个组的第一行,即 从小时== 0的组中选择(0,cat26,30.9) 从小时= 1的组中选择(1,cat67,28.5) 从小时== 2的组中选择(2,cat56,39.6) 等等 因此,所需的输出将是: 能够选择每个组的前N行也可能很方便。 任何帮助都将受到

  • 问题内容: 我有一个表的列,,,使得 给我下表 我将如何获得每个x,y组的第一行?也就是说,我将如何获得下表 这是第二个示例:对于这样的表T 我期望得到 问题答案: 考虑到SQL 2005或更高版本:

  • 问题内容: 我有2个表,一个包含我需要的最终结果,另一个包含我需要根据设定级别选择的列列表。 例如 : 所以,如果我做以下 然后,基本上我需要使用此select语句中的列名来确定从另一条语句中选择了哪些列。 香港专业教育学院尝试过的方法,我当然知道这是错的,但可以让我对我试图做的事情有所了解。 我试图以一种动态方式构建一个sql查询,该查询可以通过我放在表中的任何列进行更改。 从理论上讲,这应与以

  • 假设我有一个spark数据帧,有几列(其中列)和数据帧,有两列:和。 是否有复制以下命令的方法

  • 我正在尝试使用Puppeteer选择下拉列表中的第一个元素。问题是,选项的值在每次测试中都会更改,所以我不能根据该值选择选项,除非我能够首先检索到该值。 当前使用: 这将选择该选项,但是必须单击下拉项才能提交表单(我无法控制此操作)。 此外,我还尝试使用木偶键盘命令向下箭头并按回车键,但由于某种原因,该功能不起作用。