私は以下のようなテーブルを持っています。
id created_at grand_total amount_due
tendays
既存のデータから計算して列に金額を表示したいと思います。
if(SELECT DATEDIFF(NOW(),created_at)) >=0 and SELECT DATEDIFF(NOW(),created_at) <= 10
then
grand_total - amount_due as tendays
これはどのように可能でしょうか。
CASE ステートメントまたはIF() 関数を使用できます。BETWEEN 条件を使用して、コードの重複を避けることもできます。次のようにクエリを記述します。
SELECT
id,
created_at,
grand_total,
amount_due,
CASE WHEN DATEDIFF(NOW(),created_at) BETWEEN 0 AND 10
THEN grand_total - amount_due
ELSE NULL
END as tendays
FROM some_table;
ELSE句で条件が満たされない場合の値を定義する必要があることに注意してください。ただし、(私の例のように) NULL の場合は、NULL がデフォルトの「値」であるため、ELSE 句も省略できます。
IF() を使用すると、次のようになります。
IF(DATEDIFF(NOW(),created_at) BETWEEN 0 AND 10, grand_total - amount_due, NULL) as tendays
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加