0

以下のクエリ (最初のコード) を実行すると、データベース内の現在の到着日に基づいて 137 万のランダムな出発日が取得されます。これは朗報です。ただし、2 番目のコード クエリでデータベースを更新しようとすると、エラー メッセージ (以下を参照) が表示され、その理由がわかりません。手伝ってくれますか?

メッセージ 116、レベル 16、状態 1、行 5 サブクエリが EXISTS で導入されていない場合、選択リストに指定できる式は 1 つだけです。

第1コード

SELECT ArrivalDate, DATEADD(day, 1 + RAND(checksum(NEWID()))
* LengthOfStay.LengthofStay, ArrivalDate) AS DepartureDate    
FROM Bookings, LengthOfStay
ORDER BY ArrivalDate

セカンドコード

USE Occupancy
Update Bookings
Set DepartureDate = (SELECT ArrivalDate, DATEADD(day, 1 + RAND(checksum(NEWID()))*1.5
* LengthOfStay.LengthofStay, ArrivalDate))
FROM LengthOfStay, Bookings
4

2 に答える 2

1

あなたにはいくつかの問題があります:

  • LengthOfStay, BookingsCROSS JOIN(デカルト積)です:これは意図されたものですか
  • サブクエリから2つの列がありますが、1つだけを更新しようとしています

CROSS JOINが意図されていると仮定すると、サブクエリは必要ありません

UPDATE
   B
SET
   DepartureDate = DATEADD(day,
                           1 + RAND(checksum(NEWID()))*1.5 * L.LengthofStay,
                          B.ArrivalDate)
FROM
   LengthOfStay L, Bookings B
于 2013-02-20T09:15:20.667 に答える
0

1列を更新するために2列を選択しているようです(DepartureDate)

于 2013-02-20T09:17:49.787 に答える