2016-05-12 47 views
0

我試過了演員,並在底部註釋掉了代碼。我希望[DESC]列首先以最高計數排序。試圖從最高頻率計數到最低的列

--DROP TABLE #REF 

SELECT DISTINCT CASE_NUM,LAST_NAME,FIRST_NAME,UNIT_ID,REF_SOURCE_ID,[DESC] 
--INTO #REF 
FROM CDCLIENT 
INNER JOIN CDTBL1 ON CDCLIENT.REF_SOURCE_ID = CDTBL1.ID 
INNER JOIN CDCLSVC ON CDCLSVC.CLIENT_ID = CDCLIENT.ID 
WHERE TYPE = 'REF' 
ORDER BY CAST([DESC],CASE_NUM,LAST_NAME,FIRST_NAME,UNIT_ID,REF_SOURCE_ID as          
INTEGER) DESC 


--SELECT R.*, 
--  COUNT(*) OVER (PARTITION BY CDTBL1.[DESC]) as COUNTS, 
--FROM #REF R; 
+0

您應該添加一些示例數據和預期的輸出。人們不知道你的模式,所以不清楚這個問題是關於什麼的。 –

回答

0

只需使用ORDER BY [DESC] desc,CASE_NUM desc等等就可以得到您需要的每個訂購條款。

+0

這對desc列進行分組,但不是先按最高計數排序。 – Chris

0

試試這個:

SELECT CASE_NUM , 
     LAST_NAME , 
     FIRST_NAME , 
     UNIT_ID , 
     REF_SOURCE_ID , 
     [DESC] 
FROM (SELECT CASE_NUM , 
        COUNT(CASE_NUM) AS CASE_NUM_Count , 
        LAST_NAME , 
        COUNT(LAST_NAME) AS LAST_NAME_Count , 
        FIRST_NAME , 
        COUNT(FIRST_NAME) AS FIRST_NAME_Count , 
        UNIT_ID , 
        COUNT(UNIT_ID) AS UNIT_ID_Count , 
        REF_SOURCE_ID , 
        COUNT(REF_SOURCE_ID) AS REF_SOURCE_ID_Count , 
        [DESC] , 
        COUNT([DESC]) AS DESC_Count 
--INTO #REF 
      FROM  CDCLIENT 
        INNER JOIN CDTBL1 ON CDCLIENT.REF_SOURCE_ID = CDTBL1.ID 
        INNER JOIN CDCLSVC ON CDCLSVC.CLIENT_ID = CDCLIENT.ID 
      WHERE  TYPE = 'REF' 
      GROUP BY CASE_NUM , 
        LAST_NAME , 
        FIRST_NAME , 
        UNIT_ID , 
        REF_SOURCE_ID , 
        [DESC] 
     ) AS InnerLoop 
ORDER BY InnerLoop.DESC_Count , 
     InnerLoop.CASE_NUM_Count , 
     InnerLoop.LAST_NAME_Count , 
     InnerLoop.FIRST_NAME_Count , 
     InnerLoop.UNIT_ID_Count , 
     InnerLoop.REF_SOURCE_ID_Count DESC; 
+0

我試過了。它不會將[desc]列的次數(發生次數)從最高到最低排序。例如,如果[desc]是醫院的名稱,我希望該列按最常發生的次序排序。 – Chris

+0

我剛剛更改了列的排序,因此「DESC」列首先排序。 – Mondello