2015-10-16 59 views
0

嗨夥計如下表唯一名稱伴隨日期

╔═════╦════════════╗ 
║ Org ║ Date ║ 
╠═════╬════════════╣ 
║ A ║ 1/1/2015 ║ 
║ A ║ 12/3/2015 ║ 
║ B ║ 8/10/2015 ║ 
║ B ║ 30/5/2015 ║ 
║ C ║ 4/4/2014 ║ 
║ D ║ 19/11/2014 ║ 
╚═════╩════════════╝ 

我如何編寫一個查詢,使我獲得對應於那裏有一個以上的日期,即最早的日期只有一個獨特的組織名稱爲

╔═════╦════════════╗ 
║ Org ║ Date ║ 
╠═════╬════════════╣ 
║ A ║ 1/1/2015 ║ 
║ B ║ 30/5/2015 ║ 
║ C ║ 4/4/2014 ║ 
║ D ║ 19/11/2014 ║ 
╚═════╩════════════╝ 

在此先感謝

+0

你已經得到了你的答案,但由於這個概念對你來說似乎是新的,所以下面是解釋:你想在這裏做什麼稱爲聚合。您可以壓縮數據,例如每個組織僅顯示一個結果行。這個「per org」轉換爲SQL中的「GROUP BY Org」。然後爲其他列決定要顯示的集合('MIN','MAX','AVG',...)。在你的情況下,你想看到'MIN(日期)'。 –

+1

Tsql與MySQL,這是一個非常奇怪的組合...請刪除無效標籤。 – jarlh

+0

你應該真的回顧下面給出的答案,並向我們展示一些綠色。 –

回答

0

使用MySQL STR_TO_DATE集團通過

Select * from (SELECT * FROM `tbl` order by STR_TO_DATE(Date,'%d/%m/%Y') ASC) as new_tbl group by Org 
+1

不要這樣做。首先,是什麼給你的想法,「日期」是一個字符串?我不覺得這可能。然後你通過Org進行分組,也可以訪問「日期」(通過選擇\ *)。由於您沒有使用任何集合函數(MIN,MAX等),您可以獲得每個組織的匹配日期之一。可能是在你的* MySQL版本中,DBMS從已排序的子查詢中選擇第一個值,但這無法得到保證。不要依賴這個;它只是一個可能會改變的實現細節。 –

0

您可以使用GROUP BYMIN功能一起獲得每個Org組的最早日期:

SELECT Org, MIN(Date) AS Date 
FROM table 
GROUP BY Org 
+0

那麼,有一個基本的假設 – Strawberry

+0

而不是爆破反社會評論,你爲什麼不讓我們知道什麼是假設。你爲什麼不選擇評論其他與此類似的答案? –

+0

'日期'不是OP所描述的。 '爆破'?真? – Strawberry

2

只需使用MIN得到的最早日期和GROUP BY只獲得1獨特的組織名稱。

SELECT Org, MIN(Date) AS 'Date' FROM TableName GROUP BY Org 
+0

並且不要使用單引號作爲別名。單引號用於字符串文字。雙引號是別名。 –

+0

@TimBiegeleisen,哦,對不起,我沒有注意到你已經有了答案,你想讓我刪除我的答案嗎? – Japongskie

+0

不用擔心......這個問題很簡單,任何人都可以自己做到:-) –