我想顯示數據逐年重新排列,其中一種可能的解決方案是使用視圖並從中選擇。數據矩陣是一樣的東西(當然這是一個虛構的演示數據集):從視圖中選擇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