首先,我希望主题标题不要太模糊,我不太确定如何描述这个问题。
我收到了一个库存数据库,它是由几代不同技能水平的人发展和开发的。现在它有很多看起来相似但不完全一样的东西。
因此,虽然有一张表格,其中包含每种库存类型的成本调整。它未被使用,而是有人花时间预先计算每个可能的价格并将其添加到库存表的每一行:
SELECT Part#, CategoryID, StdCost, ListPrice, Level1, Level2, Level3
FROM [Inventory]
WHERE ...
表的每一行[Customers]
都有一个PriceLevel
包含以下值之一的列:Level1, Level2, Level3
. 但现在我刚刚发现还有一张桌子,供一小部分获得额外折扣的客户使用。E.DiscountLevel
用 a查找Left Join
很容易,我正在寻找的帮助是最后一列,这个其他折扣表也PriceLevel
用特定类别的新折扣表覆盖了客户。我不确定它是否可以完成,但是一个表中的单元格值可以用作另一个表中的列名SELECT
吗?
表[Inventory]
有列Level1, Level2, Level3
,表[InventoryDiscounts]
有一个PriceLevel
包含单词 Level1
的列。我应该只使用第二个查询,还是有可能以某种方式SELECT B.(E.Column)
这是具有许多连接的整个查询。注释块内没有粗体,但您可以在问题点周围看到星星。
SELECT
A.InventoryID, B.Description, D.Category,
B.ListPrice, B.Level3 AS Price,
E.DiscountLevel, **B.(E.PriceLevel) AS AltPrice**
FROM
[BranchInventory] A
INNER JOIN
[Inventory] B ON A.InventoryID = B.InventoryID
INNER JOIN
[Branches] C ON A.BranchID = C.BranchID
INNER JOIN
[Categories] D ON B.CategoryID = D.CategoryID
LEFT JOIN
[InventoryDiscounts] E ON E.CustomerID = 32 AND B.CategoryID = E.CategoryID
WHERE
A.BranchID = 8
AND A.InventoryID = 1181691
我希望答案是“只需使用额外的查询”,这没关系。但是你们经常可以施展一些疯狂的魔法,如果是这样的话,我会喜欢的。