我只是在学习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';
这里有任何帮助吗?
答案 0 :(得分:1)
UPDATE customer
SET status = 'INACTIVE'
WHERE billingcycle < TRUNC(SYSDATE) - 30
答案 1 :(得分:0)
我们假设你有BillingDate作为检查频率的基础:
UPDATE customer
SET status = 'INACTIVE'
WHERE (trunc(sysdate)-BilingDate) = 30
如果是30天以上你就改变= to&gt; =喜欢:
UPDATE customer
SET status = 'INACTIVE'
WHERE (trunc(sysdate)-BilingDate) >=30
或者从您的帖子推断该列为BillingCycle
,然后您可以将BillingDate
更改为BillingCycle
,如:
UPDATE customer
SET status = 'INACTIVE'
WHERE (trunc(sysdate)-Bilingcycle) >=30
答案 2 :(得分:0)
update customer
set status = 'INACTIVE'
where getdate() > dateadd(dd, 30, billingcycle);`
不幸的是,我不确定这是如何在Oracle中表达的,因为我的背景是在SQL Server中。可以使用截止日期参数替换getdate()。结算周期需要是日期列,您需要使用dateadd函数添加30天到该日期。无论如何,如果左侧小于上一个结算周期+ 30天,那么它们已经过期了。