我这里有一个有趣的问题,我不确定如果不重构我正在使用的数据库是否可以解决,但是这里...
我有一个查询需要选择以下格式的信息:“SKU”、“产品类别”、“产品子类别”、“手头”、“位置”、“已分配”、“可用”、“本月收到”
除了有点复杂的“接收本月”列外,我的每个列都工作正常。对于此列,我需要使用 SKU 值(称为 fishbowlinventoryavailabilitybylg.part)来获取“发货”表中列的每一行的总和,其中该列与 SKU 同名。
这是一个可能有帮助的示例输出:http://i.imgur.com/rv7lXxJ.png
这是我生成前 7 列的代码:
SELECT
fishbowlinventoryavailabilitybylg.part as SKU,
domo_productcosts_xlsx_costs.`product category` AS `Product Category`,
domo_productcosts_xlsx_costs.`product sub category` AS `Product Sub Category`,
fishbowlinventoryavailabilitybylg.qty AS `On Hand`,
fishbowlinventoryavailabilitybylg.LG AS Location,
fishbowlinventoryavailabilitybylg.allocated AS `Allocated`,
fishbowlinventoryavailabilitybylg.qty - fishbowlinventoryavailabilitybylg.allocated AS `Available`,
为了尝试生成“本月接收”,我尝试了一些不同的方法,但都没有成功。总和部分我可以做的很好,但它正在动态查找我无法弄清楚的列名。我几乎希望我可以做一些类似“shipments.fishbowlinventoryavailabilitybylg.part) 的事情来在 shipments 表中获取该列,但这没有任何意义。
最佳答案
您不能使用变量(例如 SKU 列中的值)作为 MySQL 或大多数其他 SQL 方言中的列名。出于这个原因,大多数数据库设计者都避免使用这种方法来布置表。
大多数需要做这些事情的程序员都会编写程序来生成他们需要的 SQL 查询。名为 information_schema.columns
的内置表可以派上用场。
关于mysql - 动态选择列名(基于另一个表行的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39604598/