试图找出如何在SQL中使用更新

试图找出如何在SQL中使用更新,sql,oracle,Sql,Oracle,我只是在学习SQL,所以我还有很长的路要走才能弄清楚一切。我正在尝试在客户表中编写一个更新,该表显示任何客户拖欠30天的帐户,并将使其处于非活动状态 我的表格包括:Customerid、Firstname、Lastname、Startdate、Billingcycle、Phone、Streetaddress、城市、州、邮政编码>、员工ID、状态、原因、状态日期、,和电子邮件 我尝试了以下方法,但没有成功 UPDATE customer SET status = ( SELECT status F

我只是在学习SQL,所以我还有很长的路要走才能弄清楚一切。我正在尝试在
客户
表中编写一个更新,该表显示任何客户拖欠30天的帐户,并将使其处于非活动状态

我的表格包括:
Customerid
Firstname
Lastname
Startdate
Billingcycle
Phone
Streetaddress
城市
邮政编码>、
员工ID
状态
原因
状态日期、,和
电子邮件

我尝试了以下方法,但没有成功

UPDATE customer
SET status = (
SELECT status
FROM customer
WHERE status = billingcycle + 30)
WHERE status = 'INACTIVE';

这里有什么帮助吗?

假设您有账单日期作为检查频率的基础:

UPDATE customer
SET status = 'INACTIVE'
WHERE (trunc(sysdate)-BilingDate) = 30
如果超过30天,您只需将=更改为>=如:

UPDATE customer
SET status = 'INACTIVE'
WHERE (trunc(sysdate)-BilingDate) >=30
或者从您的帖子推断该列为
BillingCycle
,然后您可以将
BillingDate
更改为
BillingCycle
,如:

UPDATE customer
SET status = 'INACTIVE'
WHERE (trunc(sysdate)-Bilingcycle) >=30
不幸的是,我不确定这在Oracle中是如何表达的,因为我的背景是SQL Server。getdate()可以替换为截止日期参数。计费周期需要是一个日期列,并且您需要使用类似dateadd函数的功能将30天添加到该日期。无论如何,如果左边的账单周期少于最后一个账单周期+30天,那么它们就过期了。

更新客户
UPDATE customer
SET status = 'INACTIVE'
WHERE billingcycle < TRUNC(SYSDATE) - 30
设置状态='INACTIVE' 其中billingcycle
Statusdate的数据类型是什么?
回答得很好,解释得很清楚。我建议对table列进行求解,并将常量放在条件的另一侧,以便可以使用索引(如果有):
billingcycle
UPDATE customer
SET status = 'INACTIVE'
WHERE billingcycle < TRUNC(SYSDATE) - 30