在MySQL中使用变量/函数作为动态列名

时间:2012-06-01 01:11:24

标签: mysql

是否可以使用函数或变量作为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;

所以&#34;第0个月&#34;等我希望用功能/查询替换。

0 个答案:

没有答案