table(设备名称,设备编号,下次检查时间,下次维修时间)查询结果:
设备名称,设备编号,类型,时间说明:
1.不能写存储过程,只能写SQL语句
2.需要用户输入一个类型
IF是“检查时间”
结果:设备名称,设备编号,“检查”,时间
IF是“维修时间”
结果:设备名称,设备编号,“维修”,时间
IF 不输入
结果:设备名称,设备编号,“检查”,时间
      设备名称,设备编号,“维修”,时间请问这个select语句应该怎么写啊,,好复杂啊,,,大家帮帮我啊!!!!!听说用UNION

解决方案 »

  1.   

    table(设备名称,设备编号,下次检查时间,下次维修时间)
    create table tab_samp(dev, devno,check_date,fix_date) 
    select dev,devno,flag,odate
    (select dev,devno,check_date odate,'检查' flag
    from tab_samp
    union all
    select dev,devno,fix_date,'维修' flag
    from tab_samp)
    where (flag = '变量' or '未输入' ='变量')
      

  2.   

    谢谢楼上的兄弟,我对ORACLE不太了解,能不能帮我分析下,table(设备名称,设备编号,下次检查时间,下次维修时间)   
    是已经在数据库中存在的,我现在想查询里面的数据
      

  3.   


    设备检修记录表:
    create table equipment (
        equipment_id varchar2(10),--设备编号
        equipment_name varchar2(40),--设备名称
        type_id number, --类型
        check_date date -- 检查时间 或者维修时间
    );
    类型表:
    create table type(
        type_id number, --类型编号
        type_name varchar2(40) --类型名称
    );
    查询sql:
    select * from  equipment t 
    left join type t1 on t.type_id=t1.type_id
    where t1.type_name in ('维修时间') -- 在此输入查询条件'维修时间' or '检查时间'
    order by t.equipment_id,t.equipment_name
      

  4.   


    二楼的思路完全正确,你按二楼方案解决就可以了,至于用类型两字做为字段名,你把flag改成"类型"就可以了,不过不建议使用中文字段名。