我有一个简单的表(ID、Member_ID、payment、date、payment_serial、running_total);我需要 payment_serial 才能使用数据导出到另一个系统。
我需要的导出是会员支付的所有款项(显示付款和日期),按 payment_serial 的顺序排列在一行中。
这是我使用的第一个查询:
SELECT
`Member_ID`,
IF(`payment_serial`=1,`payment`,0) AS `p1`,
IF(`payment_serial`=1,`date`,0) AS `p1_date`,
IF(`payment_serial`=1,`ID`,0) AS `p1_ID`,
IF(`payment_serial`=2,`payment`,0) AS `p2`,
IF(`payment_serial`=2,`date`,0) AS `p2_date`
IF(`payment_serial`=2,`ID`,0) AS `p2_ID`,
FROM monthlies
WHERE `Member_ID` = 4198739
如果我使用这个查询,我会看到我需要的付款,但每个付款都在单独的一行中(这会在下一阶段产生很大的导入问题):
Member_ID p1 p1_date p1_ID p2 p2_date p2_ID ...
4198739 34.50 41143 214 0 0 0 ...
4198739 0 0 0 34.50 41176 583 ...
我添加了 GROUP BY:
SELECT
IF(`payment_serial`=1,`payment`,0) AS `p1`,
IF(`payment_serial`=1,`date`,0) AS `p1_date`,
IF(`payment_serial`=1,`ID`,0) AS `p1_ID`,
IF(`payment_serial`=2,`payment`,0) AS `p2`,
IF(`payment_serial`=2,`date`,0) AS `p2_date`,
IF(`payment_serial`=2,`ID`,0) AS `p2_ID`
FROM monthlies
WHERE `Member_ID` = 4198739
GROUP BY `Member_ID`
这为每个成员提供了一行 - 但不是每次付款:
Member_ID p1 p1_date p1_ID p2 p2_date p2_ID ...
4198739 34.50 41143 214 0 0 0 ...
我哪里错了?