现在我有两个表,
电子介质表 ElectronicInfo,主要记录光盘和磁带两种介质的信息,字段如下:
id     
el_name  --名字
el_inlibdate   --入库日期
el_typeid      --类型id,1表示光盘,2表示磁带另外有一个系统设置表sysset,字段如下:
sysset_id
CDStorageLife       --光盘的存贮期限
TapeStorageLife     --磁带的存贮期限   我想查询结果集是这样的:
el_name     el_inlibdate   存贮期限(就是如果它是光盘就显示光盘的存贮期限,是磁带就显示磁带的存贮期限)    那么该怎么写这个查询语句呢?

解决方案 »

  1.   

    Select a.el_name,(case when a.el_typeid=1 then b.CDStorageLife 
       else b.TapeStorageLife end) as el_inlibdate
      from ElectronicInfo a,sysset b 
      where a.id=b.sysset_id
      

  2.   

    1、Select A.el_name,A.el_inlibdate,Decode(A.el_typeid,1,B.CDStorageLife,2,B.TapeStorageLife) from ElectronicInfo A,sysset B
    在这种情况下我认为sysset中只有一条记录
    2、Select A.el_name,A.el_inlibdate,Decode(A.el_typeid,1,B.CDStorageLife,2,B.TapeStorageLife) from ElectronicInfo A,sysset B where B.sysset_id='关于某类介质的一个类型编码'
    在这种情况下我认为sysset中sysset_id是用来对编码进行分类的。
      

  3.   

    sysset中只有一条记录.因此正确答案是:Select a.el_name,(case when a.el_typeid=1 then b.CDStorageLife 
       else b.TapeStorageLife end) as storagelife,a.el_inlibdate
      from ElectronicInfo a,sysset b