当前位置: 代码迷 >> Sql Server >> 查询语句,从两张表里面通过判断取出一个字段的值
  详细解决方案

查询语句,从两张表里面通过判断取出一个字段的值

热度:81   发布时间:2016-04-24 10:13:49.0
求一个查询语句,从两张表里面通过判断取出一个字段的值
假设有三个表如下 
表1: 问题列表
id,主键
wtlx ,varchar

表2: 受理表
id,主键,外键(问题列表的id)
chTime datetime

表3 :受理结束表
id,主键,外键(问题列表的id)
jsTime datetime
wjlx ,varchar 
其中问题列表 和受理结束表里面的wtlx 和 wjlx 字段是一样的,只是名称不一样

现在问题是这样子的
要取的数据是问题列表.wtlx 或受理结束表.wjlx
其中查询条件是 : 
受理表的时间在2014/7/1 到2014/8/1之间并且
受理表.id = 问题列表.id
如果:
受理结束表.id = 受理表.id  并且 受理表.jsTime 在2014/7/1 到2014/8/1之间的话
取受理表.wjlx 

上述条件不成立就去取问题列表.wtlx

大侠们求助了,数据是查询出来在c#里面用的,也可以提供一种c#配合查询的方法,小弟愚笨是在是想不出来了
------解决方案--------------------
if exist(selet 1 from 问题列表 as a inner join 受理表 as b on a..id = b.id 
inner join 受理结束表 as c on a.id=c.id where b.chTime between '2014-07-01' and '2014-08-01' and c.jsTime between '2014-07-01' and '2014-08-01'  )
select  wjlx from 受理结束表
else 
select wtlx from 问题列表

------解决方案--------------------

(Select wjlx =(Case When B.Id is Not Null And A.ID=C.Id And A.Id is Not Null Then B.wjlx
Else A.wtlx End) From [受理表]
Where ChTime Between 2014-7-1 And 2014-801) A
Full Join [问题列表] B
On A.id = B.id
Left Join [受理结束表] C

没测试,不知道是不是对的。
  相关解决方案