私は何をしようとしているのかに合ったシナリオを見つけることができませんでした。SQLは、別のテーブルからの最新のデータを含む1つのテーブルを更新します - 条件付き
私は、UserID、Subscription PackageID、およびSubscription日付を保持する1つのテーブルを持っています。ユーザーID 14525398のための#Subscriptionため
サンプルデータ:
上記の例でUserID Package Date
14525398 188535 2011-05-17 00:00:00.000
14525398 188535 2011-06-16 00:00:00.000
14525398 188536 2011-06-23 00:00:00.000
は、6月16日に、この人は、彼らが別で188536.
をのPackageIDにアップグレード6月23日のPackageID 188535.に加入しますテーブル私は自分のダウンロード履歴を持っていますが、私がしようとしているのは、ダウンロードした日に購読していたPackageIDを派生させたものです。このダウンロードテーブルには、UserID、ダウンロード数、ダウンロード日付、および更新が必要な価値のないPackageIDがあります。
#Download表のサンプルデータがある:
上記の例を使用UserID Dloads Date PackageID
14525398 3 2011-06-18 00:00:00.000 0
14525398 2 2011-06-18 00:00:00.000 0
14525398 2 2011-06-19 00:00:00.000 0
14525398 5 2011-06-24 00:00:00.000 0
14525398 2 2011-06-18 00:00:00.000 0
、私は正確にそれが最新だったので、4番目のレコード(5件のダウンロードレコードが)のPackageID 188536にあったことを示してクエリーを必要としますしかし、この
UPDATE #Download SET PackageID = (
SELECT TOP 1 PackageID
FROM #subscription
WHERE userID = #Download.userID AND Date <= #Download.Date
)
:パッケージ休憩しながら、2011年6月24日のダウンロード日より前には、私はそうのように更新しようとした
のPackageID 188535.になります前述のように、2011-06-24のダウンロードはPackageID 188536に設定されています。
ご協力いただければ幸いです。 SQL Server 2008の
ああ、本当にありがとうございます、それはその日の順序を逃すほど簡単だったと信じています。それは有り難いです! – Mike250
@ Mike250 plzは、問題を解決した場合には、答えをマークするのを忘れないでください。 – Zohaib
私の謝罪。私は答えを受け入れてマークしました。ありがとうございました。 – Mike250