表名:XMSJ
--建表语句:
CREATE TABLE XMSJ
(XM VARCHAR(20),
QJ VARCHAR(10),
SJ FLOAT)
INSERT INTO XMSJ VALUES('001','N',1200)
INSERT INTO XMSJ VALUES('002','N',2400)--以下为年度数据(qj:N,年度;Y1-Y12每月):
xm qj sj
001 N 1200
002 N 2400--
如何将以上数据平均分到12个月插入到XMSJ中如下??:
001 Y1 100
001 Y2 100
001 Y3 100
001 Y4 100
001 Y5 100
001 Y6 100
001 Y7 100
001 Y8 100
001 Y9 100
001 Y10 100
001 Y11 100
001 Y12 100
002 Y1 200
002 Y2 200
002 Y3 200
002 Y4 200
002 Y5 200
002 Y6 200
002 Y7 200
002 Y8 200
002 Y9 200
002 Y10 200
002 Y11 200
002 Y12 200

解决方案 »

  1.   

    CREATE TABLE XMSJ
    (
    XM VARCHAR(20),
    QJ VARCHAR(10),
    SJ FLOAT
    )
    INSERT INTO XMSJ VALUES('001','N',1200)
    INSERT INTO XMSJ VALUES('002','N',2400)--SQL
    select m.XM, n.noname, m.avgValue from
    (select *, avgValue = 1.0*SJ/12 from xmsj) m
    outer apply
    (
    select top(12) 
    rowno, 
    noname = 'Y' + CAST(rowno as varchar(2)) 
    from
    (
    select rowno = ROW_NUMBER() over(order by getdate()) 
    from sys.columns a, sys.columns b
    ) a
    ) n
    --order by m.XM,n.rowno
      

  2.   

    use Tempdb
    go
    --> --> 
    CREATE TABLE XMSJ
    (XM VARCHAR(20),
    QJ VARCHAR(10),
    SJ FLOAT)
    INSERT INTO XMSJ VALUES('001','N',1200)
    INSERT INTO XMSJ VALUES('002','N',2400)goinsert  XMSJ
    select 
    XM,
    QJ=DATEADD(m,b.number,'20100101'),
    SJ=SJ/12
    from XMSJ as a,master.dbo.spt_values as b
    where b.type='P' and b.number<12/*
    XM QJ SJ
    001 2010-01-01 00:00:00.000 100
    001 2010-02-01 00:00:00.000 100
    001 2010-03-01 00:00:00.000 100
    001 2010-04-01 00:00:00.000 100
    001 2010-05-01 00:00:00.000 100
    001 2010-06-01 00:00:00.000 100
    001 2010-07-01 00:00:00.000 100
    001 2010-08-01 00:00:00.000 100
    001 2010-09-01 00:00:00.000 100
    001 2010-10-01 00:00:00.000 100
    001 2010-11-01 00:00:00.000 100
    001 2010-12-01 00:00:00.000 100
    002 2010-01-01 00:00:00.000 200
    002 2010-02-01 00:00:00.000 200
    002 2010-03-01 00:00:00.000 200
    002 2010-04-01 00:00:00.000 200
    002 2010-05-01 00:00:00.000 200
    002 2010-06-01 00:00:00.000 200
    002 2010-07-01 00:00:00.000 200
    002 2010-08-01 00:00:00.000 200
    002 2010-09-01 00:00:00.000 200
    002 2010-10-01 00:00:00.000 200
    002 2010-11-01 00:00:00.000 200
    002 2010-12-01 00:00:00.000 200
    */
      

  3.   

    tryDECLARE @i INT
    SET @i=1
    WHILE @i<=12
    BEGIN
    INSERT xmsj SELECT xm,'y'+cast(@i AS VARCHAR),max(sj)/12 FROM XMSJ GROUP BY xm
    select @i=@i+1
    END