标题不是我的问题,但这是我可以描述的方式。
我有一个返回以下结果的查询:
我想知道是否有一种方法可以将行数从三个减少到一个,所有三个都没有空值(一行400,1000和21820),并以宴会作为描述。
感谢您的阅读。
PS:这只是对部分查询结果的捕获,并且有很多重复的行。我可以发布我的查询,如果它会有所帮助。我在那里使用了一些精选案例..
编辑:
谢谢你们,但我通过将主要查询的结果复制到另一个的输入并添加distinct和sum子句来解决这个问题
答案 0 :(得分:1)
SELECT description, MAX(number1) AS number1, MAX(number2) AS number2)
FROM myTable
GROUP BY description
答案 1 :(得分:0)
最后在Oracle中,您可以使用“When” 例如:
SELECT
DESCRIPTION,
CASE WHEN SUMPRICE1 IS NULL THEN
CASE WHEN SUMPRICE2 IS NULL THEN
CASE WHEN SUMPRICE3 IS NULL THEN
0
ELSE SUMPRICE3 END
ELSE SUMPRICE2 END
ELSE SUMPRICE1 END AS SUMPRICE
FROM MY_TABLE
GROUP BY DESCRIPTION, SUMPRICE
当然,如果您有静态列数,这是可用的。
编辑:我认为我没有遇到问题,但是,如果您不想合并列,可以使用:
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