试图弄清楚如何在SQL中使用UPDATE

时间:2013-06-15 05:11:54

标签: sql oracle

我只是在学习SQL,所以我还有很长的路要走。我正在尝试在customer表格中写一个更新,其中显示任何客户拖欠他们的帐户30天,并使其无效。

我的表格包括:CustomeridFirstnameLastnameStartdateBillingcyclePhoneStreetaddressCityStateZipEmployeeidStatusReasonStatusdateEmail

我试过以下,但没有运气;

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

这里有任何帮助吗?

3 个答案:

答案 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天,那么它们已经过期了。