选择年月日格式的最大日期

时间:2012-06-11 14:09:09

标签: sql sql-server tsql sql-server-2005 max

我有一张桌子,我从以下样本中提取了以下样本:

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

第一列是Item,最后三列是年,月,日。

如何选择每件商品的最长日期?

1 个答案:

答案 0 :(得分: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,则会丢失空间。)