隨筆-199  評論-203  文章-11  trackbacks-0

          -測試環境  
            CREATE   TABLE   Table1(ID   INT   IDENTITY(1,1),NUM   VARCHAR(10),STRING   VARCHAR(10))  
            INSERT   INTO   Table1   SELECT   'G123','ABC'  
            UNION   ALL   SELECT   'H456','ABC'  
            UNION   ALL   SELECT   'G123','ABC'  
            UNION   ALL   SELECT   'K789','XYZ'  
            UNION   ALL   SELECT   'H456','XYZ'  
            UNION   ALL   SELECT   'K789','XYZ'  

            --函數  
            CREATE   FUNCTION   F_GETSTR(@NUM   VARCHAR(10))  
            RETURNS   VARCHAR(2000)  
            AS    
            BEGIN  
                      DECLARE   @S   VARCHAR(2000)  
                      SET   @S=''  
                      SELECT   @S=@S+','+T.STRING+''   FROM   (SELECT   DISTINCT   STRING   FROM     Table1   WHERE   NUM=@NUM)   T  
                      SET   @S=STUFF(@S,1,1,'')  
                      RETURN   @S  
            END  
             
            --查詢  
             
          SELECT   ID=(SELECT   SUM(1)  
             FROM(SELECT NUM,STRING=DBO.F_GETSTR(NUM)
               FROM   Table1    
                 GROUP   BY   NUM)T
             WHERE   T.NUM+'_'+T.STRING<=A.NUM+'_'+A.STRING)  
             ,*   FROM  (SELECT NUM,STRING=DBO.F_GETSTR(NUM)  
               FROM   Table1    
               GROUP   BY   NUM)A  
             
            --結果  
            NUM                 STRING      
            -----   -----------  
            G123               ABC  
            H456               ABC,XYZ  
            K789               XYZ  

          DROP   TABLE   Table1  

          DROP   FUNCTION   F_GETSTR  

          posted on 2009-05-21 13:59 Werther 閱讀(830) 評論(0)  編輯  收藏 所屬分類: 15.SQL Server
          主站蜘蛛池模板: 平泉县| 石景山区| 县级市| 平凉市| 镇坪县| 固原市| 济宁市| 柳江县| 积石山| 会昌县| 库车县| 阜平县| 长治市| 四子王旗| 竹北市| 深州市| 汝州市| 沭阳县| 昭通市| 乌兰县| 宁晋县| 台东市| 麻江县| 阿拉尔市| 沈丘县| 铁岭县| 巴马| 会泽县| 营山县| 卫辉市| 游戏| 屏边| 松原市| 老河口市| 怀远县| 沙坪坝区| 凤翔县| 阿巴嘎旗| 鹰潭市| 汝南县| 兴文县|