帮忙写个查询的SQL文

eversun820226 2011-10-19 01:41:22
table中有A,B,C,D四个字段,
1、如果ABCD都不为空,则取D的值
2、如果ABC不为空,D为空,则取C的值
3、如果AB不为空,CD为空,则取B的值
4、如果A不为空,BCD为空,则取A的值

这个SQL文怎么写
...全文
58 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
areswang 2011-10-19
  • 打赏
  • 举报
回复

create table tb(a varchar(2),b varchar(2),c varchar(2),d varchar(2))
go
insert into tb select 1,'','',''
insert into tb select 1,null,null,null

set nocount on

--1
select case when ISNULL(a,'')<>'' and ISNULL(b,'')<>'' and ISNULL(c,'')<>'' and ISNULL(d,'')<>''
then ISNULL(d,'')
when ISNULL(a,'')<>'' and ISNULL(b,'')<>'' and ISNULL(c,'')<>'' and ISNULL(d,'')=''
then ISNULL(c,'')
when ISNULL(a,'')<>'' and ISNULL(b,'')<>'' and ISNULL(c,'')='' and ISNULL(d,'')=''
then ISNULL(b,'')
when ISNULL(a,'')<>'' and ISNULL(b,'')='' and ISNULL(c,'')='' and ISNULL(d,'')=''
then ISNULL(a,'')
end col
from tb

--2
SELECT coalesce(d,c,b,a) FROM tb
--3

SELECT isnull(isnull(isnull(d,c),b),a) FROM tb
-----------
col
----
1
1


----

1


----

1


eversun820226 2011-10-19
  • 打赏
  • 举报
回复
还有这函数,强
快溜 2011-10-19
  • 打赏
  • 举报
回复
isnull(isnull(isnull(d,c),b),a)
--小F-- 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 roy_88 的回复:]
SQL code
SELECT coalesce(d,c,b,a) FROM TABLE1
[/Quote]

VERY GOOD 忘记这个了
中国风 2011-10-19
  • 打赏
  • 举报
回复
SELECT coalesce(d,c,b,a) FROM TABLE1
--小F-- 2011-10-19
  • 打赏
  • 举报
回复

SELECT
CASE WHEN A IS NOT NULL AND B IS NOT NULL AND C IS NOT NULL AND D IS NOT NULL THEN D
WHEN A IS NOT NULL AND B IS NOT NULL AND C IS NOT NULL AND D IS NULL THEN C
WHEN A IS NOT NULL AND B IS NOT NULL AND C IS NULL AND D IS NULL THEN B
WHEN A IS NOT NULL AND B IS NULL AND C IS NULL AND D IS NULL THEN A
END
FROM
TB
areswang 2011-10-19
  • 打赏
  • 举报
回复
case when

34,593

社区成员

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

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