我有2个表,库存和交易,库存包含有关库存物料的详细信息。交易通过PK链接到记录货物/货物数量。
我正在尝试获取一个表格,不仅显示库存明细,还显示每个库存行的交易总计。
目前我正在使用的是:
SELECT Inventory.InvID,
sum(case when ITT.TransactionTypeName = 'GoodsIn' then Quantity else 0 end) As Goods_In
sum(case when ITT.TransactionTypeName = 'GoodsOut' then Quantity else 0 end) As Goods_Out
FROM
Inventory
INNER JOIN Transactions As IT ON Inventory.InvID = IT.InvID
INNER JOIN TransactionType AS ITT ON IT.TransactionType = ITT.TransactionTypeID
GROUP BY ITT.TransactionTypeName
我在另一篇帖子的Stack Overflow上发现了这个问题,通过各种测试和问题似乎无法提供正确的数据。
有了这个,我有几个问题:
修改
通过进一步的测试我确实得到了这个工作,这是我自己的愚蠢错误。我不得不按公共字段(在本例中为Inventory.InvID)对其进行分组
EDIT2
但是,这似乎不会返回没有事务的值(例如Empty或Unchecked items)
答案 0 :(得分:0)
所以我基本上回答了我自己的一部分问题(这确实是可能的),我收到了错误
错误代码:1055。SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列' Inventory.InvID'它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by 0.000秒
不兼容这导致我测试了Group By Clause。我确定我需要在连接表中使用公共字段,这导致我获得了正确的数据。