0

我只是在学习 SQL,所以我还有很长的路要走。我试图在一个customer表中写一个更新,显示任何客户在他们的帐户上拖欠 30 天,并使他们处于非活动状态。

我的表包括:Customerid, Firstname, Lastname, Startdate, Billingcycle, Phone, Streetaddress, City, State, Zip, Employeeid, Status, Reason, Statusdate, 和Email.

我尝试了以下方法,但没有运气;

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

这里有什么帮助吗?

4

3 回答 3

1
UPDATE customer
SET status = 'INACTIVE'
WHERE billingcycle < TRUNC(SYSDATE) - 30
于 2013-06-15T05:31:53.817 回答
0

假设您将 Bi​​llingDate 作为检查逾期的基础:

UPDATE customer
SET status = 'INACTIVE'
WHERE (trunc(sysdate)-BilingDate) = 30

如果是 30 天以上,您只需将 = 更改为 >=,例如:

UPDATE customer
SET status = 'INACTIVE'
WHERE (trunc(sysdate)-BilingDate) >=30

或者从您的帖子中推断出该列,BillingCycle然后您可以更改BillingDateBillingCycle

UPDATE customer
SET status = 'INACTIVE'
WHERE (trunc(sysdate)-Bilingcycle) >=30
于 2013-06-15T05:26:10.453 回答
0
update customer 
set status = 'INACTIVE' 
 where getdate() > dateadd(dd, 30, billingcycle);`

不幸的是,我不确定这在 Oracle 中是如何表达的,因为我的背景是 SQL Server。getdate() 可以替换为截止日期参数。计费周期需要是一个日期列,您需要使用 dateadd 函数在该日期上添加 30 天。无论如何,如果左侧小于最后一个计费周期 + 30 天,则它们已过期。

于 2013-06-15T05:31:45.300 回答