求sql语句,过滤列中的重复数据

exception92 2014-06-04 01:46:44
比如我查询出来的是:
name col1 col2
a 正常 NULL
a NULL 正常
b 正常 NULL
b NULL 不正常

这些数据是存放在临时表里的,最好不要使用创建表的形式 类似 create table A 什么的。


我怎么得到
name col1 col2
a 正常 正常
b 正常 不正常

...全文
316 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
風箏線已斷 2014-06-04
  • 打赏
  • 举报
回复
如果是行转列的话用case when 可以,如果就这样上面的数据,版主已经给出了答案了
幸运的意外 2014-06-04
  • 打赏
  • 举报
回复
版主大大说的对,如果LZ的每列的数据除了正常和NULL以外没有别的,就可以用通过聚合函数的方式,去掉不需要的行。
--小F-- 2014-06-04
  • 打赏
  • 举报
回复
看看你在生成这个结果集之前的语句是怎么做的? 应该在生成这个结果集之前就能够用聚合函数消除这个NULL值
chen357313771 2014-06-04
  • 打赏
  • 举报
回复
感觉像是在做行列转换的时候没有转好儿产生的结果集
發糞塗牆 2014-06-04
  • 打赏
  • 举报
回复
那动态生成列的时候就加上max
jiajiaren 2014-06-04
  • 打赏
  • 举报
回复
 -----------------------------------------查询-------------------------------

;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 行受影响)
*/
exception92 2014-06-04
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
select name,max( col1)col1,max(col2 )col2 from tb group by name
版主, 如果我的col1,col2,后边有很多,也就是动态的列,又该怎么搞??
發糞塗牆 2014-06-04
  • 打赏
  • 举报
回复
这个语句是针对你的贴出来的数据,如果不行的话贴出你的真正数据
發糞塗牆 2014-06-04
  • 打赏
  • 举报
回复
select name,max( col1)col1,max(col2 )col2 from tb group by name

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧