【问题标题】:MySQL Pivot View DynamicMySQL 透视图动态
【发布时间】:2018-01-15 12:42:11
【问题描述】:

我有一张这样的桌子

+-----------------------------------+-------------------------------------------+-------------+
| warehouse                         | item_code                                 | stock_value |
+-----------------------------------+-------------------------------------------+-------------+
| 103-VAN DXB- U56403 NADEEM - DLTL | Alcatel 1054D 1054E BLACK CHARCOAL GREY   | 500         |
+-----------------------------------+-------------------------------------------+-------------+
| 103-VAN DXB- U56403 NADEEM - DLTL | Alcatel 1054D 1054E BLACK+PURE WHITE      | 15000       |
+-----------------------------------+-------------------------------------------+-------------+
| 100-Main Warehouse - Nahda - DLTL | Alcatel 2008D WHITE+METAL SILVER DUAL SIM | 45643       |
+-----------------------------------+-------------------------------------------+-------------+
| 100-Main Warehouse - Nahda - DLTL | Alcatel 2008D-BLACK METAL SILVER DUAL SIM | 4544        |
+-----------------------------------+-------------------------------------------+-------------+

http://www.sqlfiddle.com/#!9/c4fe92/1/0

列仓库名称不固定。那么我如何创建如下所示的数据透视表

+-------------------------------------------+----------------+--------+----------------+-------------+
| item                                      | Main Warehouse | NADEEM | total quantity | total value |
+-------------------------------------------+----------------+--------+----------------+-------------+
| Alcatel 1054D 1054E BLACK CHARCOAL GREY   | 0              | 1      | 1              | 500         |
+-------------------------------------------+----------------+--------+----------------+-------------+
| Alcatel 1054D 1054E BLACK+PURE WHITE      | 0              | 1      | 1              | 1500        |
+-------------------------------------------+----------------+--------+----------------+-------------+
| Alcatel 2008D WHITE+METAL SILVER DUAL SIM | 1              | 0      | 1              | 45643       |
+-------------------------------------------+----------------+--------+----------------+-------------+
| Alcatel 2008D-BLACK METAL SILVER DUAL SIM | 1              | 0      | 1              | 4544        |
+-------------------------------------------+----------------+--------+----------------+-------------+

【问题讨论】:

  • 您是否尝试解析仓库列中的数据以获取数据透视报告中主仓库和 NADEEM 列所需的信息?
  • 输出结果集中必须出现多少个不同的仓库?如何将输入表中warehouse 列的值转换为所需输出中的行标题(Main WarehouseNADEEM)?您所需输出的第二行在total_value 列中是否有错误?请edit您的问题提供更多详细信息。如您所知,在 MySQL 中生成数据透视结果是众所周知的难题。

标签: mysql pivot pivot-table


【解决方案1】:

假设您要从仓库字段中解析所需信息,这是一种方法:

SELECT item_code, 
  IF(LOCATE('Main Warehouse', warehouse), 1, 0) AS `Main Warehouse`, 
  IF(LOCATE('NADEEM', warehouse), 1, 0) AS `NADEEM`, 
  COUNT(item_code) AS total_quantity
FROM some_table
GROUP BY item_code

【讨论】:

    猜你喜欢
    • 2018-04-21
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    相关资源
    最近更新 更多