表A.
字段有 一个 主键字段 c1 ,一个优先级字段 c2. 优先级目前取值为 (1,2,3,4,5).
表中记录是实时变化的,并不确定记录数,以及c2优先级取值的记录数
显示结果如下:
当存在有 优先级 为1 的结果时,只显示优先级为1 记录.
当不存在有优先及 为1 ,但是存在 优先级为 2,3,4,5,则按优先级升序排列显示优先级为2,3,4,5的记录数.请各位帮忙看下,谢谢!

解决方案 »

  1.   

    补充,上述可以不看。
    表A.字段
    only_unit_code varchar2(50) -- 唯一
    PRIORITY       varchar2(2)  -- 优先级
    AREA           varchar2(2)  -- 地市编码请编写一段sql,查询条件需接受一个地市参数. 即select * from A where area=&area;
    查询结果如下:
    1.当 地区编码不等于传入参数 且 存在 有 地区编码不等于传入参数条件下 优先级等于1 的结果
      则 只显示 地区编码等于传入参数 且 优先级为 1 的结果
      area<>&area and ( (select count(*) from A where priority = 1 and area<>&area) > 1)
    2.当 地区编码不等于传入参数 且 不存在 地区编码不等于传入参数条件下 优先级等于1 的结果
     则 显示 地区编码等于传入参数 按优先级排序后的结果
    逻辑有点复杂,请各位高手耐心看看能否一句sql实现,谢谢!
      

  2.   

    表数据如下:
    SQL> select * from test;
     
    ONLY_UNIT_CODE                                      PRIORITY AREA_ID
    -------------------- --------------------------------------- --------------------
    GD_MB_PFILE_0001_10                                        3 10
    GD_MB_PFILE_0003_10                                        3 10
    GD_MB_PFILE_0005_10                                        3 10
    GD_MB_PFILE_0007_10                                        5 10
    GD_MB_PFILE_0009_10                                        5 10
    GD_MB_PFILE_0011_10                                        5 10
    GD_MB_PFILE_0013_10                                        2 10
    GD_MB_PFILE_0015_10                                        1 10
    GD_MB_PFILE_0017_10                                        2 10
    GD_MB_PFILE_0019_10                                        2 10
    GD_MB_PFILE_0021_10                                        1 10
    GD_MB_PFILE_0023_10                                        1 10
    GD_MB_PFILE_0025_10                                        1 10
    GD_MB_PFILE_0027_10                                        1 20
    GD_MB_PFILE_0029_10                                        1 11
    GD_MB_PFILE_0031_10                                        1 10
    GD_MB_PFILE_0032_10                                        1 15
    GD_MB_PFILE_0034_10                                        1 16
    GD_MB_PFILE_0035_10                                        1 10
    GD_MB_PFILE_0037_10                                        1 10
     
    ONLY_UNIT_CODE                                      PRIORITY AREA_ID
    -------------------- --------------------------------------- --------------------
    GD_MB_PFILE_0039_10                                        1 10
    GD_MB_PFILE_0040_10                                        1 10
    GD_MB_PFILE_0041_10                                        1 10
    GD_MB_PFILE_0043_10                                        1 10
    GD_MB_PFILE_0045_10                                        1 10
    GD_MB_PFILE_0047_10                                        1 10
    GD_MB_PFILE_0049_10                                        1 10
    GD_MB_PFILE_0051_10                                        1 10
    GD_MB_PFILE_0052_10                                        1 10
    GD_MB_PFILE_0054_10                                        1 10
    GD_MB_PFILE_0055_10                                        1 10
    GD_MB_PFILE_0056_10                                        1 10
    GD_MB_PFILE_0057_10                                        1 10
    GD_MB_PFILE_0058_10                                        1 10
    GD_MB_PFILE_0059_10                                        1 10
    GD_MB_PFILE_0060_10                                        1 10
    GD_MB_PFILE_0061_10                                        1 10
    GD_MB_PFILE_0062_10                                        1 10
    GD_MB_PFILE_0063_10                                        1 10
    GD_MB_PFILE_0064_10                                        1 10
    GD_MB_PFILE_0067_10                                        1 10
     
    ONLY_UNIT_CODE                                      PRIORITY AREA_ID
    -------------------- --------------------------------------- --------------------
    GD_MB_PFILE_0069_10                                        1 10
    GD_MB_PFILE_0071_10                                        1 10
    GD_MB_PFILE_0072_10                                        1 10
    GD_MB_PFILE_0073_10                                        1 10
    GD_MB_PFILE_0075_10                                        1 10
    GD_MB_PFILE_0076_10                                        1 10
    GD_MB_PFILE_0079_10                                        1 10
    GD_MB_PFILE_0082_10                                        1 10
    GD_MB_PFILE_0083_10                                        1 10
    GD_MB_PFILE_0084_10                                        1 10
    GD_MB_PFILE_0085_10                                        1 10
    GD_MB_PFILE_0086_10                                        1 10
    GD_MB_PFILE_0087_10                                        1 10
    GD_MB_PFILE_0088_10                                        1 10
    GD_MB_PFILE_0089_10                                        1 10
    GD_MB_PFILE_0090_10                                        1 10
    GD_MB_PFILE_0091_10                                        1 10
    GD_MB_PFILE_0092_10                                        1 10
    GD_MB_PFILE_0093_10                                        1 10
    GD_MB_PFILE_0094_10                                        1 10
    GD_MB_PFILE_0095_10                                        1 10
     
    ONLY_UNIT_CODE                                      PRIORITY AREA_ID
    -------------------- --------------------------------------- --------------------
    GD_MB_PFILE_0096_10                                        1 10
    GD_MB_PFILE_0097_10                                        1 10
    GD_MB_PFILE_0098_10                                        1 10
    GD_MB_PFILE_0099_10                                        1 10
    GD_MB_PFILE_0100_10                                        1 10
    GD_MB_PFILE_0101_10                                        1 10
    GD_MB_PFILE_0102_10                                        1 10
    GD_MB_PFILE_0103_10                                        1 10
    GD_MB_PFILE_0104_10                                        1 10
    GD_MB_PFILE_0105_10                                        1 10
    GD_MB_PFILE_0106_10                                        1 10
    GD_MB_PFILE_0107_10                                        1 10
    GD_MB_PFILE_0108_10                                        1 10
    GD_MB_PFILE_0109_10                                        1 10
      

  3.   


    不能用存储过程 啊,必须得sql
      

  4.   

    我测试了一个sql,供您参考。
    select * from A where ((exists(
    (select 1 from A where priority = 1 and area<>&area))
    and priority = '1' ) or (not exists(
    (select 1 from A where priority = 1 and area<>&area))))
    and area=&area
    order by priority
      

  5.   

    select * from (
    SELECT A.*,
           CASE
             WHEN A.PRIORITY <> 1 AND
                  (SELECT COUNT(*)
                     FROM TEST
                    WHERE AREA_ID <> '10'
                      AND PRIORITY = 1) = 0 THEN
              'T'
             WHEN A.Priority <> 1 AND (SELECT COUNT(*)
                     FROM TEST
                    WHERE AREA_ID <> '10'
                      AND PRIORITY = 1) > 0 THEN
              'F'
             ELSE
               'T'
           END flag
      FROM TEST A ) x where x.flag='T' and x.area_id='10';