2012-06-11 102 views
0

選擇最多的日期我有我的畫下面的示例表:於年月日格式

Item <other columns> year month day 
---- -- ------------ ---- ----- --- 
VX4O GL 630.5938  2012 7  20 
BX2T GL 0   2012 7  13 
MWB806I GL 92004.72  2012 6  15 
4XU  GL 17.125  2012 7  20 
VL4O GL 130.5  2012 7  20 
MWB806I GL 92004  2012 10 26 
MWB806I GL 92005  2012 11 30 
3PU  GL 25   2012 7  20 
VC4O GL 630.6094  2012 7  20 
MWB806I GL 92005  2012 11 2 

第一列是項目,最後三列是年,月,日。

如何選擇每件商品的最大日期?

+0

看一看這個線程: http://stackoverflow.com/questions/1015689/sql-select-max-and-accompanying-field/2345892#2345892 – JaggenSWE

+0

沒有,它在一個表中SQL數據庫 – Flashgordan

+0

是一個包含多個字段或帶逗號分隔字符串的單個字段的表嗎? – Jake1164

回答

2
SELECT Item, MAX(CONVERT(DATETIME, RTRIM([year]) 
    + RIGHT('0'+RTRIM([month]), 2) 
    + RIGHT('0'+RTRIM([day], 2) 
) 
FROM dbo.table 
GROUP BY Item; 

現在你真的應該考慮修復這個模式。你爲什麼要分別存儲年/月/日?它所做的只是讓這樣的計算變得困難得多,並且阻止了任何適當的驗證(對於基本的東西你可以有檢查約束,但是對於閏年這樣的事情更復雜)。而且它不會爲你節省任何空間(事實上,如果月/日是int,或者你可以使用smalldatetime,你會失去空間)。

+0

只有當Item是一個單獨的字段,而不是單個逗號分隔的字符串時,這才起作用。 – Jake1164

+0

@ Jak1164這是合乎邏輯的,因爲OP聲明最後三個值是單獨的列,儘管格式化我們在這裏討論的是單個列。 –

+0

我不幸的是沒有太多的控制日期格式。這是來自應用程序的數據轉儲,我無法更改.... – Flashgordan

相關問題