更改sql查询结果的位置

更改sql查询结果的位置,sql,tsql,group-by,case,Sql,Tsql,Group By,Case,标题并没有明确说明我的问题,但我可以这样描述它 我有一个查询,返回以下结果: 我想知道是否有一种方法可以将包含所有三个非空值(一行中有400、1000和21820)的行数从三行减少到一行,并以“宴会”作为描述 谢谢你的阅读 PS:这只是一部分查询结果的捕获,有很多重复的行。如果有帮助,我可以发布我的查询。我正在使用一些精选案例 编辑: 谢谢大家,但我解决了这个问题,通过将主查询的结果复制到另一个查询的输入,并在Oracle中添加distinct和sum子句,您可以使用“When” 例如: 当然

标题并没有明确说明我的问题,但我可以这样描述它

我有一个查询,返回以下结果:

我想知道是否有一种方法可以将包含所有三个非空值(一行中有400、1000和21820)的行数从三行减少到一行,并以“宴会”作为描述

谢谢你的阅读

PS:这只是一部分查询结果的捕获,有很多重复的行。如果有帮助,我可以发布我的查询。我正在使用一些精选案例

编辑:


谢谢大家,但我解决了这个问题,通过将主查询的结果复制到另一个查询的输入,并在Oracle中添加distinct和sum子句,您可以使用“When” 例如:

当然,如果列的数量是静态的,这是有用的

编辑:我想我没有问题,但是,如果您不想合并列,可以使用:

SELECT DESCRIPTION,
MAX(SUMPRICE1) AS SUMPRICE1,
MAX(SUMPRICE2) AS SUMPRICE2,
MAX(SUMPRICEN) AS SUMPRICEN
FROM MY_TABLE
GROUP BY DESCRIPTION
或者,如果任何行没有值,可以使用大小写来避免null:

SELECT DESCRIPTION,
CASE WHEN MAX(SUMPRICE1) IS NULL THEN 0 ELSE WHEN MAX(SUMPRICE1) END AS SUMPRICE1,
CASE WHEN MAX(SUMPRICE2) IS NULL THEN 0 ELSE WHEN MAX(SUMPRICE2) END AS SUMPRICE2,
CASE WHEN MAX(SUMPRICEN) IS NULL THEN 0 ELSE WHEN MAX(SUMPRICEN) END AS SUMPRICEN
FROM MY_TABLE
GROUP BY DESCRIPTION
SELECT DESCRIPTION,
CASE WHEN MAX(SUMPRICE1) IS NULL THEN 0 ELSE WHEN MAX(SUMPRICE1) END AS SUMPRICE1,
CASE WHEN MAX(SUMPRICE2) IS NULL THEN 0 ELSE WHEN MAX(SUMPRICE2) END AS SUMPRICE2,
CASE WHEN MAX(SUMPRICEN) IS NULL THEN 0 ELSE WHEN MAX(SUMPRICEN) END AS SUMPRICEN
FROM MY_TABLE
GROUP BY DESCRIPTION
SELECT description, MAX(number1) AS number1, MAX(number2) AS number2)
FROM myTable
GROUP BY description