我有以下记录(多条)Name   Xz    Rxnf
姓名   3年   2005我想通过SQL查询返回下面的数据
Name   Xz    Xnxq
姓名   3年   2005-2006-1
姓名   3年   2005-2006-2
姓名   3年   2006-2007-1
姓名   3年   2006-2007-2
姓名   3年   2007-2008-1
姓名   3年   2007-2008-2希望大家告知我实现方法。。

解决方案 »

  1.   

    大家帮个忙啊,下面的Xnxq是根据Rxnf和Xz计算而出的虚拟字段。
      

  2.   

    declare @year int
    declare @MONTH INT
    set @year=2005
    set @month=1
    WHILE (@YEAR<=2007 AND @MONTH<=2)
    BEGIN 
    select name,xz,convert(nvarchar(20),rxnf)+CONVERT(NVARCHAR(4),@YEAR)+CONVERT(NVARCHAR(2),@MONTH)
    SET  @YEAR=@YEAR+1
    SET @MONTH=@MONTH+1
    END
      

  3.   

    declare @year int
    declare @MONTH INT
    set @year=2005
    set @month=1
    WHILE (@YEAR<=2007 AND @MONTH<=2)
    BEGIN  
    select name,xz,convert(nvarchar(20),rxnf)+CONVERT(NVARCHAR(4),@YEAR)+CONVERT(NVARCHAR(2),@MONTH) into daoru from tb
    SET @YEAR=@YEAR+1
    SET @MONTH=@MONTH+1
    END
    select * from daoru
      

  4.   

    DROP TABLE TB
    GO
    CREATE TABLE TB(NAME VARCHAR(20),XZ INT,RXNF CHAR(4))
    INSERT INTO TB
    SELECT '姓名',3,'2005'
    GOSELECT 
    T.NAME,T.XZ,LTRIM(T.RXNF+R.NUMBER)+'-'+LTRIM(T.RXNF+R.NUMBER+1)+'-'+LTRIM(H.NUMBER)
    FROM TB T,MASTER..SPT_VALUES R,MASTER..SPT_VALUES H
    WHERE R.TYPE = 'P' AND R.NUMBER BETWEEN 0 AND T.XZ - 1
    AND H.TYPE = 'P' AND H.NUMBER BETWEEN 1 AND 2
    NAME                 XZ                                                 
    -------------------- ----------- -------------------------------------- 
    姓名                   3           2005-2006-1
    姓名                   3           2005-2006-2
    姓名                   3           2006-2007-1
    姓名                   3           2006-2007-2
    姓名                   3           2007-2008-1
    姓名                   3           2007-2008-2(所影响的行数为 6 行)
      

  5.   

    非常感谢两位的相助,问题用(Ken)的语句可以实现。