0

私はSQLを学んでいるので、すべてを理解するにはまだ長い道のりがあります。customerアカウントで 30 日間滞納している顧客を非アクティブにする表にUPDATE を書き込もうとしています。

私のテーブルは、、CustomeridFirstnameLastnameStartdateBillingcyclePhoneStreetaddressCityStateZipで構成されています。EmployeeidStatusReasonStatusdateEmail

次のことを試しましたが、うまくいきませんでした。

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

滞納をチェックするための基礎として BillingDate があると仮定しましょう。

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);`

残念ながら、私のバックグラウンドは SQL Server であるため、これが Oracle でどのように表現されるかはわかりません。getdate() は、締切日パラメーターに置き換えることができます。請求サイクルは日付列である必要があり、dateadd 関数などを使用してその日付に 30 日を追加する必要があります。いずれにせよ、左側が最後の請求サイクル + 30 日未満の場合は、期限が過ぎています。

于 2013-06-15T05:31:45.300 に答える