当我运行下面的查询(第一个代码)时,我根据数据库中的当前到达日期获得了137万个随机出发日期,这是个好消息。但是,当我尝试使用第二代码查询更新数据库时,我收到一条错误消息(见下文),我不知道为什么。你能帮我吗?
消息116,级别16,状态1,行5只能有一个表达式 在未引入子查询时在选择列表中指定 存在。
第一个代码
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
答案 0 :(得分:1)
你有几个问题:
LengthOfStay, Bookings
是一个CROSS JOIN(笛卡尔积):这是打算假设您打算使用CROSS JOIN,则不需要子查询
UPDATE
B
SET
DepartureDate = DATEADD(day,
1 + RAND(checksum(NEWID()))*1.5 * L.LengthofStay,
B.ArrivalDate)
FROM
LengthOfStay L, Bookings B
答案 1 :(得分:0)
您似乎正在选择2列来更新1列(DepartureDate)