php - 带有附加列的 SQL 数据透视表

标签 php mysql codeigniter pivot-table

我正在为一家小型 express 公司使用 Codeigniter 和 Mysql 构建一个 express 系统。我想要做的是建立一个数据透视表,该表将显示每个运单的特定付款类型的总付款(包括总计)。

我现在有这个查询:

SELECT IFNULL( p.waybill_number,  'GrandTotal' ) AS Waybill, w.consignee, w.consignor,
       SUM( IF(       p.payment_terms =  'prepaid', p.amount, NULL ) ) AS Prepaid,
       SUM( IF( p.payment_terms =  'collect', p.amount, NULL ) ) AS Collect
FROM payment p JOIN
     waybill w
     ON p.waybill_number = w.waybill_number
GROUP BY p.waybill_number WITH ROLLUP

但这在最后一行显示了收货人和收货人的值。我想要的是仅显示最后一行中所有“预付”和“收集”交易的总计。希望您能帮忙。

提前致谢!!!

更新::: 我已经编辑了我的查询,现在看起来像这样......

SELECT
IFNULL(mw.waybill_number, 'GrandTotal') as Waybill,
CASE WHEN mw.waybill_number THEN c1.name ELSE NULL END as Consignee,
CASE WHEN mw.waybill_number THEN c2.name ELSE NULL END as Consignee,
SUM(IF(p.payment_terms = 'prepaid', p.amount, NULL)) as Prepaid,
SUM(IF(p.payment_terms = 'collect', p.amount, NULL)) as Collect
FROM manifest_waybill mw
JOIN waybill w
on w.waybill_number = mw.waybill_number
LEFT JOIN payment p
on p.waybill_number = mw.waybill_number
JOIN customer c1
on c1.customer_id = w.consignee
JOIN customer c2
on c2.customer_id = w.consignor
WHERE manifest_number = 103
GROUP BY mw.waybill_number WITH ROLLUP

查询运行但结果不是我所期望的。此查询在每一行中重复收货人和发货人的值。

我希望结果是这样的:

运单# |收货人 |发货人|

1216415 |一个 |乙|

1216416 | C | D|

1216417 |E | F|

发生的事情是:

运单# |收货人 |发货人|

1216415 |电子| F|

1216416 |电子| F|

1216417 |电子| F|

最后一行的值 (121617) 在每一行中重复

最佳答案

如果我理解正确,只需使用 case 语句:

SELECT IFNULL(p.waybill_number,  'GrandTotal' ) AS Waybill,
       (CASE WHEN p.waybill_number IS NOT NULL THEN w.consignee END) as consignee,
       (CASE WHEN p.waybill_number IS NOT NULL THEN w.consignor END) as consignor,
       SUM(IF(p.payment_terms =  'prepaid', p.amount, NULL ) ) AS Prepaid,
       SUM(IF( p.payment_terms =  'collect', p.amount, NULL ) ) AS Collect
FROM payment p JOIN
     waybill w
     ON p.waybill_number = w.waybill_number
GROUP BY p.waybill_number WITH ROLLUP;

关于php - 带有附加列的 SQL 数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27942177/

相关文章:

php - Codeigniter 数据库查询子句不起作用

php - mpdf - 来自 url 的图像不会加载到生成的 pdf 中

substring_index 中的 Mysql 多种加工模式

codeigniter - 嵌套where子句codeigniter mysql查询

javascript - 在 PHP 变量中使用 Ajax 数据

mysql - 如何从mysql表中获取最后一条记录和倒数第二条记录

php - 将 JavaScript 变量作为隐藏输入传递给 PHP

javascript - 使用 php sdk 显示 Facebook 登录按钮

javascript - 未捕获的 InvalidValueError : not a LatLngBounds or LatLngBoundsLiteral: unknown property f

php - 传递给选择字段的实体必须被管理