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

          -測試環(huán)境  
            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'  

            --函數(shù)  
            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  
             
            --結(jié)果  
            NUM                 STRING      
            -----   -----------  
            G123               ABC  
            H456               ABC,XYZ  
            K789               XYZ  

          DROP   TABLE   Table1  

          DROP   FUNCTION   F_GETSTR  

          posted on 2009-05-21 13:59 Werther 閱讀(839) 評論(0)  編輯  收藏 所屬分類: 15.SQL Server
          主站蜘蛛池模板: 襄城县| 中山市| 旺苍县| 咸阳市| 合川市| 饶平县| 东光县| 合水县| 长丰县| 巩义市| 隆化县| 胶南市| 紫阳县| 临夏市| 双城市| 武夷山市| 隆安县| 久治县| 灵石县| 新干县| 凤台县| 上虞市| 枣阳市| 浮山县| 桓仁| 定边县| 祁东县| 南召县| 开鲁县| 镇远县| 宁南县| 依兰县| 金秀| 射阳县| 弥勒县| 延寿县| 望城县| 旬邑县| 紫云| 股票| 商都县|