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

第一列是项目,后三列是年、月、日。

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

4

1 回答 1

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

现在你真的应该考虑修复这个模式。为什么要分别存储年/月/日?它所做的只是使这样的计算变得更加困难,并阻止任何适当的验证(您可以对基本内容进行检查约束,但对于闰年之类的事情要复杂得多)。而且它不会为您节省任何空间(实际上,如果月/日为整数,或者您可以使用 smalldatetime,您会丢失空间)。

于 2012-06-11T14:14:43.073 回答