我被这个SQL问题困住了,我尝试了不同的方法来解决它,但我总是得到一个错误,"SQL to删除自2000年以来没有帐户的患者。“
以下是表格:
Patient (PatientID, FamilyName, GivenName, Address, Suburb, State, PostCode)
Doctor (ProviderNo, Name)
Item (ItemNo, Description, Fee)
Account (AccountNo, ProviderNo, PatientID, Date)
AccountLine (AccountNo, ItemNo)我写的代码是:
DELETE PatientID, Item.Date
FROM dtoohey.Patient
WHERE AccountLine.AccountNo = Account.AccountNo
AND Account.PatientID = Patient.PatientID
AND Date <=(TO_DATE('31-DEC-1999','DD-MON-YYYY');有人能帮帮忙吗?
发布于 2016-10-17 05:36:06
我将使用not exists来表达这一点
delete patient p
where not exists (select 1
from account a
where a.PatientID = p.PatientID and
a.date >= date '2000-01-01'
);我已经使用Oracle语法为date常量表达了这一点。大多数其他数据库都支持ANSI标准的YYYY-MM-DD格式,因此只需删除date关键字即可。
发布于 2016-10-17 06:55:15
您也可以使用IN执行此操作:
DELETE *
FROM Patient
WHERE Patient.PatientID IN
(SELECT PatientID
FROM Account
WHERE Account.date >= 10-01-2016)发布于 2016-10-17 13:19:22
从存在的患者中删除帐户(从帐户WHERE Account.PatientID = Patient.PatientID和Account.date >=‘2000-12-31’中选择1)
https://stackoverflow.com/questions/40075719
复制相似问题