做一个查询语句:显示字段"display",在表的多个字段中,选择那些不为空的字段(NAME1,NAME2,NAME3,.....NAME10)。将不为空的字段找出来如(name1,name2)显示,显示字段只有一个字段
大家明白我的意思了 吗
先跪谢拉

解决方案 »

  1.   

    做一个查询语句:显示字段"display",一张表里有多个字段如(NAME1,NAME2,NAME3,.....NAME10),选择那些不为空的字段,假如有NAME1,NAME2。将不为空的字段找出来如(name1,name2),在DISPLAY下显示结果是  NAME1 NAME2 
    希望大家可以理解
      

  2.   

    好像明白了一点,
    比如
    Table1
    col1 col2 col3
    1    null 3
    null 2    null这样的数据,楼主想要什么结果?
      

  3.   

    好的我想要这样的结果:
    DISPLAY
      1 3
       2
    这是显视查询的结果
      

  4.   

      select nvl(字段1,'')||nvl(字段2,'')||nvl(字段3,'') as DISPLAY from 表 
      

  5.   

    看看通过这个能不能找到你要的user_tab_cols
      

  6.   

    应该是8楼的意思。
    select  table_name,COLUMN_NAME,COLnullable from user_tab_cols where nullable='Y'
      

  7.   

    Table1 
    col1 col2 col3 
    1    null 3 
    null 2    null 显示结果:
    display
     col1 1 col3 3
      col2 2
    字段名和字段内容都需要显示。"display"是显示列的字段名啊 
    “select  table_name,COLUMN_NAME,COLnullable from user_tab_cols where nullable='Y'“这个结果会有3个显示列,我希望只有一个显示列
    大家在帮我看看吧
    先谢拉  
      

  8.   

      我是这样写的:测试结果没有达到要求: 
     SELECT
    (CASE  WHEN  B.LEAVE_NX IS NULL and B.LEAVE_H IS NULL AND B.LEAVE_S IS NULL 
    AND B.LEAVE_C IS NULL AND B.LEAVE_JHSY IS NULL ANDB.LEAVE_KH IS NULL 
    AND B.LEAVE_BR  IS NULL AND B.LEAVE_YQXX IS NULL AND B.LEAVE_BS IS NULL AND B.LEAVE_GS IS NULL 
    AND B.LEAVE_G IS NULL AND B.LEAVE_DX IS NULL AND B.LEAVE_QT IS NULL  THEN ' ' 
    ELSE CASE  WHEN B.LEAVE_NX <> '0' THEN TO_CHAR(B.LEAVE_NX,'年休')
         ELSE CASE  WHEN B.LEAVE_S<> '0' THEN TO_CHAR(B.LEAVE_H,'婚假')
               ELSE CASE  WHEN B.LEAVE_C <> '0' THEN TO_CHAR(B.LEAVE_S,'丧假') 
                    ELSE CASE  WHEN B.LEAVE_C <> '0' THEN TO_CHAR(B.LEAVE_C,'产假'+TO_CHAR(B.LEAVE_C) 
                         ELSE CASE  WHEN B.LEAVE_JHSY<> '0' THEN TO_CHAR(B.LEAVE_JHSY,'计划生育'+TO_CHAR(B.LEAVE_JHSY))  
                               ELSE CASE  WHEN B.LEAVE_KH <> '0' THEN TO_CHAR(B.LEAVE_KH,'看护假'+TO_CHAR(B.LEAVE_KH))  
                                     ELSE CASE  WHEN B.LEAVE_BR<> '0' THEN TO_CHAR(B.LEAVE_BR,'哺乳假'+TO_CHAR(B.LEAVE_BR)) 
                                           ELSE CASE  WHEN B.LEAVE_YQXX<> '0' THEN TO_CHAR(B.LEAVE_YQXX,'孕期休息'+TO_CHAR(B.LEAVE_YQXX))  
                                                 ELSE  CASE  WHEN B.LEAVE_BS<> '0' THEN TO_CHAR(B.LEAVE_BS,'病伤假'+TO_CHAR(B.LEAVE_BS))  
                                                       ELSE  CASE  WHEN B.LEAVE_GS<> '0' THEN TO_CHAR(B.LEAVE_GS,'工伤假'+TO_CHAR(B.LEAVE_GS)) 
                                                          ELSE CASE  WHEN B.LEAVE_G<> '0' THEN TO_CHAR(B.LEAVE_G,'公假'+TO_CHAR(B.LEAVE_HG) 
                                                               ELSE CASE  WHEN B.LEAVE_DX<> '0' THEN TO_CHAR(B.LEAVE_DX,'调休'+TO_CHAR(B.LEAVE_DX))  
                                                                  ELSE  CASE  WHEN B.LEAVE_QT<> '0' THEN TO_CHAR(B.LEAVE_QT,'其它')  END END  END END END END  END END END
      END END END END END) REMARK
                    
    FROM  TIMECARD B
        GROUP BY
                   B.LEAVE_NX,
                   B.LEAVE_H ,
                    B.LEAVE_S,
                     B.LEAVE_C,
                     B.LEAVE_JHSY,
                      B.LEAVE_KH,
                     B.LEAVE_BR,
                     B.LEAVE_YQXX,
                     B.LEAVE_BS,
                     B.LEAVE_GS,
                      B.LEAVE_G,
                      B.LEAVE_DX,
                       B.LEAVE_QT  
                   
            
      

  9.   

    select nvl(字段1,'') ¦ ¦nvl(字段2,'') ¦ ¦nvl(字段3,'') as DISPLAY from 表 
      

  10.   

    select coalesce(name1,name2,....,name10) display from table