我想显示数据逐年重新排列,其中一种可能的解决方案是使用视图并从中选择。数据矩阵是一样的东西(当然这是一个虚构的演示数据集):从视图中选择MySQL多维
USA 2005 22 156
CAN 2005 14 101
MEX 2005 5 32
USA 2006 24 160
CAN 2006 16 103
USA 2007 26 163
MEX 2007 8 35
的SQL代码来创建和填充表:
DROP TABLE IF EXISTS `tab1`;<br>
CREATE TABLE `tab1` (<br>
`id1` int(4) unsigned NOT NULL AUTO_INCREMENT,
`iso3` char(3) NOT NULL,
`year` int(4) unsigned NOT NULL,
`aaa` int(10) DEFAULT NULL,
`bbb` int(10) DEFAULT NULL,
PRIMARY KEY (`id1`)
)
INSERT INTO `tab1` VALUES
('1', 'USA', '2005', '22', '156'),
('2', 'CAN', '2005', '14', '101'),
('3', 'MEX', '2005', '5', '32'),
('4', 'USA', '2006', '24', '160'),
('5', 'CAN', '2006', '16', '103'),
('6', 'USA', '2007', '26', '163'),
('7', 'MEX', '2007', '8', '35');
COMMIT;
现在我想获得的参数“AAA”一个二维表是这样的:
country 2005 2006 2007
USA 22 24 26
CAN 14 16
MEX 5 8
但是下面的SQL代码省略所有缺少数据的线,无论是一个单一的价值,我只得到一个行
USA 22 24 26
的SQL代码:
SELECT view2005.Country, view2005.2005, view2006.2006, view2007.2007
FROM view2005, view2006, view2007
WHERE view2005.country = view2006.country
AND view2005.country = view2007.country
任何想法如何做到这一点,包括缺失数据线?提前致谢。
那些没有2005年数据的国家呢? – Galz 2011-05-03 16:00:23
是的,这不是一个好的尝试,删除它。发布新的一个。 – 2011-05-03 16:19:59