【发布时间】:2017-03-07 20:00:15
【问题描述】:
我有一个表view_remit,每个月的第一天(E_FROM)到月底(E_TO)都有一个ID列表和它们各自的total_PBR。
| ID | E_From | E_To |Total_PBR|
| 01 |01/01/2016|03/31/2016| 1000 |
| 01 |08/01/2016|08/31/2016| 1000 |
| 02 |01/01/2016|01/31/2016| 3000 |
| 02 |02/01/2016|02/29/2016| 3000 |
我想要的是选择每个 ID 支付和不支付的所有月份。就像下面这个例子。
| ID | E_From | E_To |Total_PBR|
| 01 |01/01/2016|01/31/2016| 1000 |
| 01 |02/01/2016|02/29/2016| 1000 |
| 01 |03/01/2016|03/31/2016| 1000 |
| 01 |04/01/2016|04/30/2016| 0 |
| 01 |05/01/2016|05/31/2016| 0 |
| 01 |06/01/2016|06/30/2016| 0 |
| 01 |07/01/2016|07/31/2016| 0 |
| 01 |08/01/2016|08/31/2016| 1000 |
| 01 |09/01/2016|09/30/2016| 0 |
| 01 |10/01/2016|10/31/2016| 0 |
| 01 |11/01/2016|11/30/2016| 0 |
| 01 |12/01/2016|12/31/2016| 0 |
我在这里使用了另一个问题的代码MySQL monthly Sale of last 12 months including months with no Sale
SELECT ID,
IF( MONTH( E_From ) = 1, Total_PBR, 0 ) AS 'Jan',
IF( MONTH( E_From ) = 2, Total_PBR, 0 ) AS 'Feb',
IF( MONTH( E_From ) = 3, Total_PBR, 0 ) AS 'Mar',
IF( MONTH( E_From ) = 4, Total_PBR, 0 ) AS 'Apr',
IF( MONTH( E_From ) = 5, Total_PBR, 0 ) AS 'May',
IF( MONTH( E_From ) = 6, Total_PBR, 0 ) AS 'Jun',
IF( MONTH( E_From ) = 7, Total_PBR, 0 ) AS 'Jul',
IF( MONTH( E_From ) = 8, Total_PBR, 0 ) AS 'Aug',
IF( MONTH( E_From ) = 9, Total_PBR, 0 ) AS 'Sep',
IF( MONTH( E_From ) = 10, Total_PBR, 0 ) AS 'Oct',
IF( MONTH( E_From ) = 11, Total_PBR, 0 ) AS 'Nov',
IF( MONTH( E_From ) = 12, Total_PBR, 0 ) AS 'Dec', year(E_FROM) AS Year,
SUM(Total_PBR ) AS total_yearly
FROM view_remit
GROUP BY PEN, YEAR( E_From )
LIMIT 0 , 30
它有效,但它没有正确计算某些月份的 total_PBR。 任何帮助表示赞赏。
【问题讨论】:
-
如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 CREATE 和 INSERT 语句(和/或 sqlfiddle),以便我们可以更容易复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
-
GROUP BY 中的“笔”是什么?它应该是“ID”吗?