在提出問題之前,我想告訴大家,我一直在嘗試在Google和這裏找到解決方案。 不幸的是,我仍然認真地堅持這個。我是SQL Server的新手(通常使用MySQL & MongoDB)。我必須將數據庫從MySQL遷移到SQL Server。SQL Server Group By基於一列
我想使用GROUP BY item_id。我可以在MySQL中做得很好,但它不適用於SQL Server。這裏是我的示例數據,
╔════╦═══════╦════════════╦════════════╦═══════════════════════╗
║ id ║item_id║ lat ║ lng ║ timestamp ║
╠════╬═══════╬════════════╬════════════╬═══════════════════════╣
║ 1 ║ a1 ║51.42743450 ║-0.72776696 ║2017-07-05 09:54:49.000║
║ 2 ║ a1 ║51.59665507 ║-0.72777098 ║2017-07-05 11:54:49.000║
║ 3 ║ b2 ║51.59664690 ║-0.67272032 ║2016-08-10 10:11:49.000║
║ 4 ║ b2 ║51.59664874 ║-0.67270288 ║2016-08-10 11:05:49.000║
║ 5 ║ b2 ║51.59665167 ║-0.67271587 ║2016-08-10 10:08:49.000║
╚════╩═══════╩════════════╩════════════╩═══════════════════════╝
這裏是我的MySQL的代碼,
SELECT item_id, lat, lng, MAX(timestamp) AS latest FROM record GROUP BY item_id;
它會正確地給我,
╔═══════╦════════════╦════════════╦═══════════════════════╗
║item_id║ lat ║ lng ║ latest ║
╠═══════╬════════════╬════════════╬═══════════════════════╣
║ a1 ║51.59665507 ║-0.72777098 ║2017-07-05 11:54:49.000║
║ b2 ║51.59664874 ║-0.67270288 ║2016-08-10 11:05:49.000║
╚═══════╩════════════╩════════════╩═══════════════════════╝
,但是當我在SQL Server嘗試它不工作。它給了我表中的每一行。他是SQL Server代碼,
SELECT asset_id, lat, lng, MAX(timestamp) AS latest FROM
mydb.record
GROUP BY asset_id, lat, lng
我也曾經嘗試這樣做,我已經#2發現(這我真搞不清楚),
SELECT a.asset_id, a.lat, a.lng FROM mydb.record a
INNER JOIN (
SELECT asset_id, MAX(timestamp) latest FROM mydb.record
GROUP BY asset_id
) b
ON a.asset_id = b.asset_id
它仍然沒有工作。我真的被SQL Server世界困住了。請有人幫助我。謝謝。
這些工作完美。你節省了我的時間。非常感謝 ! –