私はいくつかの検索を行っていますが、私が探している結果が得られないようです。基本的に私たちは全社的に4つの異なる管理システムを用意しており、各システムのすべてのデータを定期的に組み合わせています。私の目標は、1時間ごとに中央データベースにデータを更新することです。データベースから各グループの最後のレコードを取得しています - SQL Server 2005/2008
COMPUTERNAME | SERIALNUMBER | USERNAME | LASTIP | LASTUPDATE | SOURCE
TEST1 | 1111 | BOB | 1.1.1.1 | 1/17/2011 01:00:00 | MGMT_SYSTEM_1
TEST1 | 1111 | BOB | 1.1.1.1 | 1/18/2011 01:00:00 | MGMT_SYSTEM_2
TEST1 | 1111 | PETER | 1.1.1.11 | 1/19/2011 01:00:00 | MGMT_SYSTEM_3
TEST2 | 2222 | GEORGE | 1.1.1.2 | 1/17/2011 01:00:00 | MGMT_SYSTEM_1
TEST3 | 3333 | TOM | 1.1.1.3 | 1/19/2011 01:00:00 | MGMT_SYSTEM_2
TEST4 | 4444 | MIKE | 1.1.1.4 | 1/17/2011 01:00:00 | MGMT_SYSTEM_1
TEST4 | 4444 | MIKE | 1.1.1.41 | 1/19/2011 01:00:00 | MGMT_SYSTEM_3
TEST5 | 5555 | SUSIE | 1.1.1.5 | 1/19/2011 01:00:00 | MGMT_SYSTEM_1
だから私はこのマスターテーブルを照会するだけ(LASTUPDATEに基づく)最新の記録私は、そのシステムについての最新情報を得ることができる方法を検索:ここでは私が働いているサンプルデータセットです。問題は、各データベースに1つのシステムが存在することですが、もちろん正確な更新時間は決してありません。
私はこのような何かを得ることを期待する:
TEST1 | 1111 | PETER | 1.1.1.11 | 1/19/2011 01:00:00 | MGMT_SYSTEM_3
TEST2 | 2222 | GEORGE | 1.1.1.2 | 1/17/2011 01:00:00 | MGMT_SYSTEM_1
TEST3 | 3333 | TOM | 1.1.1.3 | 1/19/2011 01:00:00 | MGMT_SYSTEM_2
TEST4 | 4444 | MIKE | 1.1.1.41 | 1/19/2011 01:00:00 | MGMT_SYSTEM_3
TEST5 | 5555 | SUSIE | 1.1.1.5 | 1/19/2011 01:00:00 | MGMT_SYSTEM_1
私は、MAX関数を使用して試してみましたが、それを私は1つの列のみを取得することができます。私は最後の更新されたレコードを与えるユニークなIDフィールドを持っていないので、私はサブクエリでそれを使用することはできません。 1つのシステムはMySQLデータベースであり、MySQLのMAX機能は実際にはGROUP BYごとに1つのレコードを返すだけの方法で動作しますが、SQL Serverでは機能しません。
私はMAXとLEFT JOINを使用する必要があると思っていますが、これまでの試みは失敗しました。
ご協力いただき誠にありがとうございます。私は、過去3〜4時間の間、私の脳をラッキーにして、うまくいきました。このマスタテーブルは、SQL Server 2005サーバー上にあります。
ありがとうございます!
ジョー、それは素晴らしい仕事。私はWITH句について知らなかったし、OVERやPARTITIONを使わなかったことがある。彼らが何をしているのか簡単に教えてもらえますか?私はそれらを探しましたが、今私は正しい情報を見つけることを確認します。 – RyanF
@RyanF:WITH句は[Common Table ExpressionまたはCTE](http://msdn.microsoft.com/en-us/library/ms190766.aspx)を定義します。 [row_number](http://msdn.microsoft.com/en-us/library/ms186734.aspx)は[ウィンドウ関数](http://www.simple-talk.com/sql/learn-sql-server/working-with-window-functions-in-sql-server /)を参照してください。どちらもSQL Server 2005で導入された機能です。うまくいけば、これらのリンクを使用することで、正しい方向に着手することができます。 –