我是这样写的:测试结果没有达到要求: 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
select nvl(字段1,'') ¦ ¦nvl(字段2,'') ¦ ¦nvl(字段3,'') as DISPLAY from 表
select coalesce(name1,name2,....,name10) display from table
希望大家可以理解
比如
Table1
col1 col2 col3
1 null 3
null 2 null这样的数据,楼主想要什么结果?
DISPLAY
1 3
2
这是显视查询的结果
select table_name,COLUMN_NAME,COLnullable from user_tab_cols where nullable='Y'
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个显示列,我希望只有一个显示列
大家在帮我看看吧
先谢拉
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