2

MySQL の列のラベルとして関数または変数を使用することは可能ですか?

たとえば、日付を含めたい場合は、次のようになります。

select 
  sum(P.AMOUNT) AS monthname(date_sub(CURDATE(), INTERVAL 1 MONTH))
from
  PAYMENT P
WHERE
  P.CREATED_DATE > (date_sub(CURDATE(), INTERVAL 1 MONTH));

AS エイリアスの正しい構文ではないため、これは失敗します。私もこれを試しました:

SET @s = monthname(date_sub(CURDATE(), INTERVAL 1 MONTH));

select 
  sum(P.AMOUNT) AS @s
from
  PAYMENT P
WHERE
  P.CREATED_DATE > (date_sub(CURDATE(), INTERVAL 1 MONTH)); 

これも機能しません...

何か案は?

編集 - 上記の例では、実際には追加の列を使用して日付情報を返すことができることがわかりました。問題は、次のように、さまざまな日付範囲を持つ列がいくつかあることです。

select
  sum(IF((P.CREATED_DATE BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 MONTH) and DATE_SUB(CURDATE(), INTERVAL 0 MONTH)),P.amount,0)) AS 'Month 0',
  sum(IF((P.CREATED_DATE BETWEEN DATE_SUB(CURDATE(), INTERVAL 2 MONTH) and DATE_SUB(CURDATE(), INTERVAL 1 MONTH)),P.amount,0)) AS 'Month -1',
  sum(IF((P.CREATED_DATE BETWEEN DATE_SUB(CURDATE(), INTERVAL 3 MONTH) and DATE_SUB(CURDATE(), INTERVAL 2 MONTH)),P.amount,0)) AS 'Month -2'
from
  PAYMENT P
WHERE
  P.AMOUNT < 100000;

したがって、関数/クエリに置き換えようとしているのは「月0」などです。

4

0 に答える 0