比如我查询出来的是:
name col1 col2
a 正常 NULL
a NULL 正常
b 正常 NULL
b NULL 不正常
这些数据是存放在临时表里的,最好不要使用创建表的形式 类似 create table A 什么的。
我怎么得到
name col1 col2
a 正常 正常
b 正常 不正常
------解决方案--------------------
select name,max( col1)col1,max(col2 )col2
from tb
group by name
------解决方案--------------------
-----------------------------------------查询-------------------------------
;WITH t(name,col1,col2)AS
(
SELECT 'a','正常','NULL' UNION ALL
SELECT 'a','NULL','正常' UNION ALL
SELECT 'b','正常','NULL' UNION ALL
SELECT 'b','NULL','不正常'
)
SELECT name,MAX(col1) col1,MAX(col2)col2 FROM t GROUP BY name
-----------------------------------------结果-------------------------------
/*
name col1 col2
---- ---- ------
a 正常 正常
b 正常 不正常
(2 行受影响)
*/
------解决方案--------------------
感觉像是在做行列转换的时候没有转好儿产生的结果集
------解决方案--------------------
看看你在生成这个结果集之前的语句是怎么做的?
应该在生成这个结果集之前就能够用聚合函数消除这个NULL值
------解决方案--------------------
版主大大说的对,如果LZ的每列的数据除了正常和NULL以外没有别的,就可以用通过聚合函数的方式,去掉不需要的行。
------解决方案--------------------
如果是行转列的话用case when 可以,如果就这样上面的数据,版主已经给出了答案了