日期:2014-05-16  浏览次数:20472 次

关于SQL查询的问题,,,,
有如下数据

CREATE TABLE A(dptid VARCHAR(20),age1 INT,age2 INT,age3 INT,age4 INT,nowqty INT,[year] VARCHAR(4),[month] VARCHAR(2))
CREATE TABLE B(dptid VARCHAR(20),age1 INT,age2 INT,age3 INT,age4 INT,qty INT,[year] VARCHAR(4),[month] VARCHAR(2))

INSERT INTO A(dptid,age1,age2,age3,age4,nowqty,year,month)
SELECT 'A01',0,2,3,3,8,2014,3

INSERT INTO B(dptid,age1,age2,age3,age4,qty,year,month)
SELECT 'A01',0,0,2,0,2,2014,2


现在想得到如下数据:
A01,0,2,1,3,8,2014,1
A01,0,2,3,3,8,2014,2
.
.
.
A01,0,2,3,3,8,2014,12

------解决方案--------------------
什么规律?sql多少?
------解决方案--------------------
是不是数据给的有问题?多给点数据来看看》
------解决方案--------------------
理解得不一定对吭
select a.dptid,a.age1-isnull(b.age1,0),a.age2-isnull(b.age2,0),a.age3-isnull(b.age3,0),a.age4-isnull(b.age4,0),a.nowqty,a.year,a.number as [Month] from 
(select A.*,number from A,master..spt_values where number>=1 and number<=12 and type='P') a left join
(select B.*,number from B ,master..spt_values where number>=1 and number<B.mon and type='P') b
on a.dptid=b.dptid and a.number=b.number
order by a.dptid,a.number