2014-03-06 88 views
0

我想从4个表中生成报告。无法弄清楚如何去做。 我正在使用sql server 2008 R2和asp.net作为前端。如何从4个表中获取值

[表1] ---> 2014

----------------------------- 
Division totalPrograms 
----------------------------- 
EDD-COA   3 
EDD-EDSD   2 
EDD-EOA   6 
EDD-SOA   2 
EDD-WOA   3 

表2 ----> 2013

------------------------------ 
Division totalPrograms 
------------------------------ 
EDD-COA   24 
EDD-EDSD    3 
EDD-EOA   14 
EDD-SOA   7 
EDD-WOA   11 

表3 ----> 2012

------------------------------ 
Division totalPrograms 
------------------------------ 
EDD-COA   12 
EDD-EDSD    1 
EDD-EOA   9 
EDD-SOA   7 
EDD-WOA   12 

表4 - - > 2011(注:本表中不存​​在EDD-SOA)

------------------------------- 
Division totalPrograms 
------------------------------- 
EDD-COA   2 
EDD-EDSD    1 
EDD-EOA   3 
EDD-WOA   3 

最终的结果应该是:>> ---->

--------------------------------------------- 
Division 2014 2013 2012 2011 
--------------------------------------------- 
EDD-COA 3 24 12 2 
EDD-EDSD 2 3 1 1 
EDD-EOA 6 14 9 3 
EDD-SOA  2  7  7  0 
EDD-WOA 3 11 12 3 

但我想为EDD-SOA行的值作为最终的表,但我米失去了一些东西。请指导我..

回答

0
SELECT a.Division as 'Division', 
(case when a.totalPrograms is null then '0' else a.totalPrograms 
end) '2014', 
(case when b.totalPrograms is null then '0' else b.totalPrograms 
end) '2013', 
(case when c.totalPrograms is null then '0' else c.totalPrograms 
end) '2012', 
(case when d.totalPrograms is null then '0' else d.totalPrograms 
end) '2011' 
from Table1 a FULL JOIN Table2 b 
ON a.Division = b.Division 
FULL JOIN Table3 c 
ON a.Division = c.Division AND b.Division = c.Division 
FULL JOIN Table4 d 
ON a.Division = d.Division AND b.Division = d.Division AND c.Division = d.Division 

输出:

DIVISION 2014 2013 2012 2011 
EDD-COA  3 24 12 2 
EDD-EDSD 2 3 1 1 
EDD-EOA  6 14 9 3 
EDD-SOA  2 7 7 0 
EDD-WOA  3 11 12 3 
+0

越来越语法错误 – user2139057

+0

你有什么错误? – Avt

+0

它正在工作,但我有改进的解决方案。你可以在这里测试http://sqlfiddle.com/#!2/f01bf/3 – Avt