动态选择列名(基于另一个表行的值)

时间:2016-09-20 22:18:43

标签: mysql

我在这里遇到一个有趣的问题,如果不重组我正在使用的数据库,我不确定是否可以解决,但是这里有...

我的查询需要按以下格式选择信息:“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`,

为了尝试生成“接收本月”,我尝试了一些不同的东西,但我没有运气。总和部分我可以做得很好,但它正在动态查找列名,我无法弄清楚。我几乎希望我可以做一些像“shipment.fishbowlinventoryavailabilitybylg.part”这样的东西来获取货运表中的那一列,但这没有任何意义。

1 个答案:

答案 0 :(得分:2)

您不能将变量(例如SKU列中的值)用作MySQL中的列名或SQL的大多数其他方言。出于这个原因,大多数数据库设计者都避免使用这种方法来布置表格。

大多数需要执行此类操作的程序员编写程序来生成所需的SQL查询。名为information_schema.columns的内置表可以随之而来。