日期:2014-05-17  浏览次数:20457 次

一个SQL语句,但是不知道该怎么写
是这样子的,我建立一个视图,从表A中取一些字段,并且新加一列,这一列的值是这么判断的:如果表B中存在与表A相关联的记录,则为空,如果不存在,则取这些记录里面某字段最大的一个。不知道这样说大家明白不明白。大意是这样的:
if exists(select * from B where B.ziduan=A.ziduan )
 select null as 新增字段
else
 select max(某字段) from B where B.ziduan=A.ziduan as 新增字段

------解决方案--------------------
if exists(select * from B where B.ziduan=A.ziduan )
 select null as 新增字段
else
 select max(某字段) from B where B.ziduan=A.ziduan as 新增字段 

你这个语句有错误呀

如果select * from B where B.ziduan=A.ziduan 这行是不存在的,
还能取出它的字段吗?????

------解决方案--------------------
SQL code

--猜一个
select *,case when ziduanB is null then (select max(ziduanB) from B) else null end 新增字段
from
(
    select * from A left join B on A.ziduanA=B.ziduanB
) t

------解决方案--------------------
SQL code

select *,case when colB is null then (select max(colB) from B) else null end as 新增字段
from(select * from A left join B on A.colA=B.colB) t

------解决方案--------------------
探讨
一时脑子短路,现在已经自己解决这个问题啦。。谢谢大家。但是有个新问题。

一个CASE判断,能带出2个字段的么?

就是这样的:对一个字段进行判断,如果这个字段=某个值,则在视图里面加上列1=某固定值,列2=某固定值。

只试过带出一个字段的,就是判断这个字段等于某个值,则在视图里面加上列1=某值

我想应该可以吧,不至于一定要让我对同样的字段去比较2次吧?

------解决方案--------------------
探讨

一时脑子短路,现在已经自己解决这个问题啦。。谢谢大家。但是有个新问题。

一个CASE判断,能带出2个字段的么?

就是这样的:对一个字段进行判断,如果这个字段=某个值,则在视图里面加上列1=某固定值,列2=某固定值。

只试过带出一个字段的,就是判断这个字段等于某个值,则在视图里面加上列1=某值

我想应该可以吧,不至于一定要让我对同样的字段去比较2次吧?

------解决方案--------------------
是啊,比较2次,一个表达式只能有一个结果,没法返回两个结果