我想用这句话来更新表格:
UPDATE PatientLedger
SET DatedAs = (SELECT pp.ServiceDate
FROM PatientLedger pl
JOIN PatientProcedure pp ON pl.PatientProcedureID = pp.PatientProcedureID
WHERE dateadd(dd, datediff(dd, 0, pl.DatedAs) + 0, 0) !=
dateadd(dd, datediff(dd, 0, pp.ServiceDate) + 0, 0))
但是我得到了一个例外
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
我的同事建议我使用这个查询(它有效!)
UPDATE pl
SET DatedAs = pp.ServiceDate
FROM PatientLedger pl
JOIN PatientProcedure pp ON pl.PatientProcedureID = pp.PatientProcedureID
WHERE dateadd(dd, datediff(dd, 0, pl.DatedAs)+0, 0) != dateadd(dd, datediff(dd, 0, pp.ServiceDate)+0, 0)
请告诉我,有什么不同?我可以认为第二个查询每次都有一行,首先选择多行。
我还使用了下一个表达式来比较日期
CAST (pl.DatedAs AS date) != CAST (pp.ServiceDate AS date)
请告诉我们第一个表达和
之间的利弊 dateadd(dd, datediff(dd, 0, pl.DatedAs)+0, 0) !=
dateadd(dd, datediff(dd, 0, pp.ServiceDate)+0, 0)