求个语句的写法,该怎么解决
求个语句的写法,,,,
sql2005
有如下数据,,,,,
现在我想把没有的其他9个月补足,意思就是部门编号,部门名称,年,月都显示,其他字段显示0,
另外,因为我这个例子刚好是1,2,3,这3个连续的月,实际情况中有可能会出现1,3,8这样的月份,
这就要求吧其他的月补足,求语句,,,,,
------解决方案--------------------
sql2005
有如下数据,,,,,
CREATE TABLE test(dptid varchar(20),dptname varchar(50),liushi1 int,
liushi2 int,liushi3 int,liushi4 int,liushi5 int,
liushi6 int,Outqty int,
[year] varchar(4),[month] varchar(2))
INSERT INTO test(dptid,dptname,liushi1,liushi2,liushi3,liushi4,liushi5,liushi6,Outqty,[year],[month])
SELECT
'0118612', '成都分理处', 0, 2, 0, 0, 0, 0, 2, 2014, 1
UNION ALL
SELECT
'0118612', '成都分理处', 0, 0, 0, 1, 0, 0, 1, 2014, 2
UNION ALL
SELECT
'0118612', '成都分理处', 1, 0, 0, 1, 0, 0, 2, 2014, 3
现在我想把没有的其他9个月补足,意思就是部门编号,部门名称,年,月都显示,其他字段显示0,
另外,因为我这个例子刚好是1,2,3,这3个连续的月,实际情况中有可能会出现1,3,8这样的月份,
这就要求吧其他的月补足,求语句,,,,,
------解决方案--------------------
CREATE TABLE test(dptid varchar(20),dptname varchar(50),liushi1 int,
liushi2 int,liushi3 int,liushi4 int,liushi5 int,
liushi6 int,Outqty int,
[year] varchar(4),[month] varchar(2))
INSERT INTO test(dptid,dptname,liushi1,liushi2,liushi3,liushi4,liushi5,liushi6,Outqty,[year],[month])
SELECT
'0118612', '成都分理处', 0, 2, 0, 0, 0, 0, 2, 2014, 1
UNION ALL
SELECT
'0118612', '成都分理处', 0, 0, 0, 1, 0, 0, 1, 2014, 2
UNION ALL
SELECT
'0118612', '成都分理处', 1, 0, 0, 1, 0, 0, 2, 2014, 3
select isnull(a.dptid,'0118612') as dptid , isnull(a.dptname,'成都分理处') as dptname ,
isnull(a.liushi1,0) as liushi1 ,
isnull(a.liushi2,0) as liushi2 ,
isnull(a.liushi3,0) as liushi3 ,
isnull(a.liushi4,0) as liushi4 ,
isnull(a.liushi5,0) as liushi5 ,
isnull(a.liushi6,0) as liushi6 ,
isnull(a.Outqty,0) as Outqty ,
isnull(a.[year],'2014') as [year] ,
isnull(b.number,0) as [month]
from test a right join master..spt_values b on a.[month] = b.number
where b.[type]='p' and b.number between 1 and 12
/*
dptid dptname liushi1 liushi2 liushi3 liushi4 liushi5 liushi6 Outqty year month
-------------------- -------------------------------------------------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ---- -----------
0118612 成都分理处 0 2 0 0 0 0 2 2014 1
0118612 成都分理处 0 0 0 1 0 0 1 2014 2
0118612 成都分理处 1 0 0 1 0 0 2 2014 3