您好我有"SQL查询",看看在上周的每个成员这样做,我创建的"SQL查询",它是工作很会工作的数量,但我想从ALISE改变week1或week2到的这个数据本周我的"SQL查询"是:
SELECT `staffID`,
SUM(if (created_at BETWEEN NOW()-INTERVAL 1 WEEK AND NOW(), 1,0))
AS `week1`,
SUM(if (created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()-INTERVAL 1 WEEK, 1,0))
AS `week2`,
FROM tasks
WHERE status ='done'
GROUP BY `staffID
Run Code Online (Sandbox Code Playgroud)
我想成为这样的"sql查询",但mysql给我错误.那么,无论如何要解决这个问题?
SELECT `staffID`,
SUM(if (created_at BETWEEN NOW()-INTERVAL 1 WEEK AND NOW(), 1,0))
AS NOW()-INTERVAL 1 WEEK,
SUM(if (created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()-INTERVAL 1 WEEK, 1,0))
AS NOW()-INTERVAL 2 WEEK,
FROM tasks
WHERE status ='done'
GROUP BY `staffID
Run Code Online (Sandbox Code Playgroud)
sql给我这条消息:
答案很简单:在SQL中不可能.列别名是常量.您必须动态创建查询以实现您想要的:
SET @column_alias1 := NOW() - INTERVAL 1 WEEK;
SET @column_alias2 := NOW() - INTERVAL 2 WEEK;
SET @query := CONCAT('SELECT SUM(...) AS `', @column_alias1, '`, SUM(...) AS `', @column_alias2, '` FROM ...');
PREPARE dynamic_statement FROM @query;
EXECUTE dynamic_statement;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4430 次 |
| 最近记录: |