0
我有一個存儲應用程序詳細信息的表。應用程序只不過是一組顯示分數的數據。mysql-無法從數據透視表獲取基於最新日期和時間的數據
每個應用程序有6份即1,2,3,4,5,和6。因此,在數據庫表中的部件可以具有值範圍從1到6
相同的應用程序可具有一個或多個爲一部分保存的條目。例如,ID爲9的應用程序可以有(可能)3部分的第1部分和每個部分有一個分數和分數只是一個數值。
我想要獲取的是:獲取每個應用程序的所有6個部分的分數,但只顯示最近的分數。因此,如果應用程序9第1部分在2016年6月1日的得分爲8,並且在2016年3月3日的得分爲3,則應該顯示3作爲得分。
我的表看起來像這樣:
CREATE TABLE IF NOT EXISTS `reg_updates` (
`id` int(11) NOT NULL,
`application_id` int(11) NOT NULL,
`part` int(11) NOT NULL,
`reg_score_id` int(11) NOT NULL,
`reg_score` int(11) NOT NULL,
`done_date` date NOT NULL,
`done_time` time NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=latin1;
這是我爲了這個目的書面查詢:
SELECT MAX(CONCAT(RU.done_date,' ',RU.done_time)) AS date,RU.application_id,
MAX(CASE WHEN (RU.part = 1) THEN RU.reg_score END) part1Score,
MAX(CASE WHEN RU.part = 2 THEN RU.reg_score END) part2Score,
MAX(CASE WHEN RU.part = 3 THEN RU.reg_score END) part3Score,
MAX(CASE WHEN RU.part = 4 THEN RU.reg_score END) part4Score,
MAX(CASE WHEN RU.part = 5 THEN RU.reg_score END) part5Score,
MAX(CASE WHEN RU.part = 6 THEN RU.reg_score END) part6Score
FROM reg_updates AS RU
GROUP BY RU.application_id;
但它不獲取正確的數據。我無法根據最新的done_date和done_time獲取數據。我只是基於第一個條目纔得到它。
這是tutorial link我跟着創建了這個有點數據透視表。
以下是樣本SQL FIDDLE。
讓我試試這個。 –