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

最初の列は項目、最後の 3 列は年、月、日です。

アイテムごとの最大日付を選択するにはどうすればよいですか?

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;

ここで、このスキーマを修正することを検討する必要があります。年月日を別々に保存するのはなぜですか?このような計算をより困難にし、適切な検証を妨げるだけです (基本的なものにはチェック制約を設定できますが、うるう年などの場合ははるかに複雑になります)。また、スペースを節約することはできません (実際、月/日が int の場合、または smalldatetime を使用できる場合は、スペースが失われます)。

于 2012-06-11T14:14:43.073 に答える