sql 的 查询 ,数据筛选

SKY徐 2008-01-11 04:19:07
原表:
id name age (varchar)
1 xu
2 5
3 xzx
4 6

如果age为空,显示 name , 如果name 为空,显示 age ,并且显示在一个列中。
最好写个存储过程

想要结果:
id message
1 xu
2 5
3 xzx
4 6

求教。。。。请赐教。。。。万分感谢。。。。
...全文
150 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
SKY徐 2008-01-11
  • 打赏
  • 举报
回复
谢谢!
谢谢!
OK!
强呀!!!!!!
崇拜!!!!!!!!!!
SKY徐 2008-01-11
  • 打赏
  • 举报
回复
我试试!!
free1879 2008-01-11
  • 打赏
  • 举报
回复

select id ,case when name='' then 'have age is: '+age else 'have name is: '+name end as message
from 你的表

wzy_love_sly 2008-01-11
  • 打赏
  • 举报
回复
可以,不过第一列不是空的就会输出第一列了,多写几个
case when n1<>'' then 'have n1' when n2<>'' then 'have n2'........ end as '列名'

SKY徐 2008-01-11
  • 打赏
  • 举报
回复
而且 不只四行 行数不定呢
SKY徐 2008-01-11
  • 打赏
  • 举报
回复
sky兄弟
能不能多列呀 两列只是例子 我这有好几列呢 而且类型不同
wzy_love_sly 2008-01-11
  • 打赏
  • 举报
回复
declare @tb table (id int,name varchar(10),age varchar(10))
insert into @tb select 1,'xu',''
insert into @tb select 2,'10','5'
insert into @tb select 3,'xzx',''
insert into @tb select 4,'','6'

select id ,case when name='' then 'have age' else 'have name' end as [message]

from @tb


不用group by 我又错了
wzy_love_sly 2008-01-11
  • 打赏
  • 举报
回复
declare @tb table (id int,name varchar(10),age varchar(10))
insert into @tb select 1,'xu',''
insert into @tb select 2,'10','5'
insert into @tb select 3,'xzx',''
insert into @tb select 4,'','6'

select id ,max(case when name='' then 'have age' else 'have name' end) as [message]

from @tb group by id


id message
1 have name
2 have name
3 have name
4 have age
wzy_love_sly 2008-01-11
  • 打赏
  • 举报
回复
老大取巧了!
SKY徐 2008-01-11
  • 打赏
  • 举报
回复
这个结果也可
id message
1 have name
2 have age
3 have name
4 hava age


拜求。。。。。
wzy_love_sly 2008-01-11
  • 打赏
  • 举报
回复
declare @tb table (id int,name varchar(10),age varchar(10))
insert into @tb select 1,'xu',''
insert into @tb select 2,'','5'
insert into @tb select 3,'xzx',''
insert into @tb select 4,'','6'

select id ,max(case when name='' then age else name end)

from @tb group by id


id (无列名)
1 xu
2 5
3 xzx
4 6
子陌红尘 2008-01-11
  • 打赏
  • 举报
回复
select id,isnull(name,cast(age as varchar(10))) as message from 表

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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