2017-06-11 93 views
-1

我有一個名爲scheduleData表包含以下幾列:MySQL的收益最低和最高值每物品惟一

ID | CREATED (time stamp) | CLIENT | PROJECT | RESOURCE | EFFORT | WEEK (date) 

的數據從「Excel的時間表」來源於直,因此這不是關係。 每一行表示在某個特定周內在特定項目上預訂的資源。

每次從excel中導出數據時,大部分數據都會被複制,所以我只對基於CREATED列的最新數據集感興趣。

對於每個項目,我希望返回顯示MIN和MAX星期的行,在最新的數據集(基於CREATED)內基本確定每個項目的開始日期和結束日期。

找到一個低於從描述似乎這樣的伎倆的例子,但我收到錯誤消息當我嘗試執行它

SELECT t.* FROM scheduleData t 
JOIN 
(SELECT project, MIN(week) minVal 
FROM scheduleData GROUP BY project 
) t2 
ON t.week = t2.minVal AND t.project = t2.project; 

改編下面的例子:Select min value per item in MySQL

乾杯, 的Mikael

+0

您需要添加「AS」到MIN(周)MINVAL,使其讀取「MIN(周)AS MINVAL」 –

+0

東西從這個問題缺少。你認爲這可能是什麼?另請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql -query – Strawberry

回答

0

實現當我用新鮮的眼睛看這個,我只是有點厚,而且我的問題有點垃圾。無論如何,我已經設法調整查詢以完成我想要的操作,即爲任何給定的唯一項目返回最大值和最小值(在本例中爲日期),在這種情況下爲項目。 這種情況的SQL如下:

SELECT DISTINCT(t.week), t.project, t.client 
FROM scheduleData t 
JOIN 
(SELECT project, MIN(week) AS minVal, MAX(week) as maxVal 
FROM scheduleData GROUP BY project) t2 
ON (t.date = t2.minVal OR t.date = t2.maxVal) AND t.project = t2.project