隨筆-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 閱讀(839) 評論(0)  編輯  收藏 所屬分類: 15.SQL Server
          主站蜘蛛池模板: 徐汇区| 南丹县| 宾川县| 江西省| 宝丰县| 合山市| 宁武县| 腾冲县| 武川县| 崇左市| 高台县| 丹凤县| 本溪| 依兰县| 招远市| 嵊州市| 德安县| 修水县| 康保县| 山东| 巫溪县| 杭州市| 柏乡县| 满洲里市| 哈密市| 玉林市| 梁山县| 大名县| 贵州省| 灵丘县| 阆中市| 准格尔旗| 翁源县| 城步| 呼和浩特市| 教育| 台州市| 普定县| 比如县| 轮台县| 中宁县|