列排序和格式化

时间:2017-12-29 16:48:42

标签: sql oracle

我试图按导演的名字排序,但却无法进行排序。以下是我用来获取当前格式的代码。当我尝试按导演名称排序时,它似乎没有工作并将它们放在连续的行中。第一张桌子是我现在拥有的,第二张桌子是我想要的。我正在使用oracle sql。

SELECT DIRECTOR_NAME
,(CASE WHEN MemberCoordinatingCareUserName IS NULL THEN CCManagerFullName END) AS CCMANAGERNAME
,MemberCoordinatingCareUserName as MEMBERCCCARE
,SDCB_PEDS
,SDCB_ADULT_CCL3
,SDCB_ADULT_CCL2
,CCL_3
,CCL_2
,INF
,CCL_1
,TOTAL_ASSIGNMENT 
,TEAM_MEMBER_COUNT
,TEAM_SUMMARY
,TEAM_CASELOAD_PERCENTAGE
,CASELOAD_PERCENTAGE
,SDCB_PEDS_CASELOAD
,SDCB_ADULT_CCL3_CASELOAD
,SDCB_ADULT_CCL2_CASELOAD
,CCL_3_CASELOAD
,CCL_2_CASELOAD
,INF_CASELOAD
,CCL_1_CASELOAD
FROM (
          (
            SELECT 
                  DISTINCT DIRECTOR_NAME
                  ,CCManagerFullName
                  ,NULL AS MemberCoordinatingCareUserName
                  ,NULL AS SDCB_PEDS
                  ,NULL AS SDCB_ADULT_CCL3
                  ,NULL AS SDCB_ADULT_CCL2
                  ,NULL AS CCL_3
                  ,NULL AS CCL_2
                  ,NULL AS INF
                  ,NULL AS CCL_1
                  ,NULL AS TOTAL_ASSIGNMENT
                  ,TEAM_MEMBER_COUNT
                  ,TEAM_SUMMARY
                  ,TEAM_CASELOAD_PERCENTAGE
                  ,NULL AS CASELOAD_PERCENTAGE
                  ,NULL AS SDCB_PEDS_CASELOAD
                  ,NULL AS SDCB_ADULT_CCL3_CASELOAD
                  ,NULL AS SDCB_ADULT_CCL2_CASELOAD
                  ,NULL AS CCL_3_CASELOAD
                  ,NULL AS CCL_2_CASELOAD
                  ,NULL AS INF_CASELOAD
                  ,NULL AS CCL_1_CASELOAD
            FROM ALL_DATA
          )
            UNION ALL
          (
            SELECT NULL AS DIRECTOR_NAME
                   ,CCManagerFullName
                   ,MemberCoordinatingCareUserName
                   ,SDCB_PEDS
                   ,SDCB_ADULT_CCL3
                   ,SDCB_ADULT_CCL2
                   ,CCL_3
                   ,CCL_2
                   ,INF
                   ,CCL_1
                   ,TOTAL_ASSIGNMENT
                   ,NULL AS TEAM_MEMBER_COUNT
                   ,NULL AS TEAM_SUMMARY
                   ,NULL AS TEAM_CASELOAD_PERCENTAGE
                   ,CASELOAD_PERCENTAGE
                   ,SDCB_PEDS_CASELOAD
                   ,SDCB_ADULT_CCL3_CASELOAD
                   ,SDCB_ADULT_CCL2_CASELOAD
                   ,CCL_3_CASELOAD
                   ,CCL_2_CASELOAD
                   ,INF_CASELOAD
                   ,CCL_1_CASELOAD
          FROM ALL_DATA
          )
      )ME
ORDER BY CCManagerFullName,(CASE WHEN MemberCoordinatingCareUserName IS NULL THEN 1 ELSE 2 END),MemberCoordinatingCareUserName

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为你希望导演处于领先地位。你想要的输出对我来说没有意义,让托德,格雷格,戴夫倒序,而弗兰克和丽莎则按字母顺序排列。

ORDER BY
    DIRECTORNAME,
    CCManagerFullName,
    CASE WHEN MemberCoordinatingCareUserName IS NULL THEN 1 ELSE 2 END,
    MemberCoordinatingCareUserName

由于nulls无论如何都应排序低,你可能会发现case表达式的排序是多余的。