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