これはタイトルで説明するのがむしろ複雑です。SQL Server:TOPレコードを選択し、別のテーブルで結果を更新する
私は2つのテーブルを持っています.1つはユーザーがWeb訪問を入力し、もう1つは最後のログイン日を格納するフィールドを持つユーザーテーブルです。
私は、彼らがユーザテーブルに登録されている場合には、各ユーザーによる最新のユーザー訪問(上の最後にログインした日時をベースにする
これは、ストアドプロシージャ内のユーザーになります
注:。。I関連する列にテーブルを省略している。
TABLE [Login]
[User] [VARCHAR](15) NOT NULL,
[LogOn_Date] [DATETIME] NOT NULL
と
TABLE [Users]
[User] [varchar](15) NOT NULL,
[Last_Login_Dt] [datetime] NULL
私は、ユーザーにマッチし[Last_Login_Dt]
列で[LogOn_Date]
値でUsers
テーブルを更新し、Login
の表に、各ユーザから最新の日付[LogOn_Date]
を選択するために探しています。
注:ログオンするすべてのユーザーがUsers
テーブルにあるわけではありませんが、ユーザーであるかどうかにかかわらず、Windows認証で全員を追跡しますが、users
テーブルに存在する各ユーザーのみを更新します。
ありがとうございました!
Users.User 'は、集計関数またはGROUP BY句に含まれていないため、選択リストでは無効です。私は、ユーザーテーブルでその列を使用しないようにするが、そのストアドプロシージャは、X日間アクティブでない場合、そのユーザーアカウントを無効にします。私たちはDBチーム全体を失い、.Net開発者はすべてをやっている。 –
@MichaelHartmannあなたはクエリの最後に 'Group By U.User'を追加するだけですが、上記のあなたのコメントに基づいて、テーブルを更新して、ユーザーを非アクティブ化するproc。更新し、Last_Login_Dtフィールドをチェックするのは、非アクティブ化クエリで 'MAX(LogOn_Date)'を取得するよりも時間がかかります。 – JamieD77
Joeの見解はうまくいきますが、あなたが示唆するようにするのが理想的ですが、私はそのビューをユーザを無効にするSPとどのように組み合わせるか分かりません。私たちのSQLスタッフ全員が移動され、.NET開発者は私たち自身に任せました。 @ jamieD77 –