日期:2014-05-18 浏览次数:20649 次
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'TEST')
BEGIN
    DROP TABLE TEST
END
GO
CREATE TABLE TEST (
tb VARCHAR(50) ,
chan INT ,
chanone INT ,
chantwo INT ,
class INT ,
name VARCHAR (100)
);  
INSERT INTO TEST VALUES('13511' , 135, 1 , 1 , 1 , '中国');
INSERT INTO TEST VALUES('13522', 135 , 2 , 2 , 2 , '浙江');
INSERT INTO TEST VALUES('13523', 135 , 2 , 3 , 2 , '湖南');
INSERT INTO TEST VALUES('13542', 135 , 4 , 2 , 3 , '杭州');
INSERT INTO TEST VALUES('13543' , 135 , 4 , 3 , 3 , '长沙');
INSERT INTO TEST VALUES('13611', 136 , 1 , 1 , 1 , '美国');
INSERT INTO TEST VALUES('13622', 136 , 2 , 2, 2 , '加州1');
INSERT INTO TEST VALUES('13623', 136 , 2 , 3 , 2 , '加州2');
INSERT INTO TEST VALUES('13644', 136 , 4 , 2 , 3 , '老加');
INSERT INTO TEST VALUES('13645', 136 , 4 , 3 , 3 , '小加');
GO
SELECT tb, chan, chanone, chantwo, class, stuff(( select '-'+ Name 
                from TEST AS A
                where B.chan = A.chan AND (B.chantwo = A.chantwo OR A.chantwo = 1) AND B.class >= A.class for xml path('')),1,1,'') as nm
FROM TEST AS B
tb    chan    chanone    chantwo    class    nm
13511    135    1    1    1    中国
13522    135    2    2    2    中国-浙江
13523    135    2    3    2    中国-湖南
13542    135    4    2    3    中国-浙江-杭州
13543    135    4    3    3    中国-湖南-长沙
13611    136    1    1    1    美国
13622    136    2    2    2    美国-加州1
13623    136    2    3    2    美国-加州2
13644    136    4    2    3    美国-加州1-老加
13645    136    4    3    3    美国-加州2-小加