我有一张桌子,我从以下样本中提取了以下样本:
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,最后三列是年,月,日。
如何选择每件商品的最长日期?
答案 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,则会丢失空间。)