我是SQL的新手,我已经完成了基本的MySQL
所以我有一个查询工作,加入3个表很好,但是我想在OrderItem.ItemNumber字段中计算值的出现次数
所以我尝试了这个:
Select
[Order].dDispatchBy,
[Order].dProcessedOn,
[Order].Source,
[Order].ExternalReference,
[Order].nOrderId,
[Order].bProcessed,
[Order].CreatedBy,
[Order].CreatedDate,
[Order].dReceievedDate,
[Order].nStatus,
[Order].ReferenceNum,
[Order].SubSource,
OrderItem.fkOrderID,
OrderItem.fkStockID,
OrderItem.nQty,
OrderItem.ItemNumber,
OrderItem.fkLocationId,
OrderItem.fkCompositeParentRowId,
OrderItem.ChannelSKU,
OrderItem.fkStockItemId,
OrderItem.fkStockItemId_processed,
OrderItem.DispatchStockUnitCost,
OrderItem.ShippingCost,
OrderItem.SalesTax,
Count(OrderItem.ItemNumber) As CountMe
From
[Order] Inner Join
OrderItem
On [Order].pkOrderID = OrderItem.fkOrderID Left Join
StockItem
On OrderItem.fkStockID = StockItem.pkStockItemID
Where
Convert(DATETIME,Floor(Convert(FLOAT,[Order].dProcessedOn))) =
Convert(DATETIME,Floor(Convert(FLOAT,GetDate())))
如果删除该行,这可以正常工作:
Count(OrderItem.ItemNumber) As CountMe
如果我不删除此行,则会收到错误。
[FireDAC] [Phys] [ODBC] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]列>' Order.dDispatchBy'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
答案 0 :(得分:0)
您应该使用&#34中提到的所有列添加group by;选择"除了聚合函数。试试这个,
SELECT [Order].dDispatchBy
,[Order].dProcessedOn
,[Order].Source
,[Order].ExternalReference
,[Order].nOrderId
,[Order].bProcessed
,[Order].CreatedBy
,[Order].CreatedDate
,[Order].dReceievedDate
,[Order].nStatus
,[Order].ReferenceNum
,[Order].SubSource
,OrderItem.fkOrderID
,OrderItem.fkStockID
,OrderItem.nQty
,OrderItem.ItemNumber
,OrderItem.fkLocationId
,OrderItem.fkCompositeParentRowId
,OrderItem.ChannelSKU
,OrderItem.fkStockItemId
,OrderItem.fkStockItemId_processed
,OrderItem.DispatchStockUnitCost
,OrderItem.ShippingCost
,OrderItem.SalesTax
,Count(OrderItem.ItemNumber) AS CountMe
FROM [Order]
INNER JOIN OrderItem ON [Order].pkOrderID = OrderItem.fkOrderID
LEFT JOIN StockItem ON OrderItem.fkStockID = StockItem.pkStockItemID
WHERE Convert(DATETIME, Floor(Convert(FLOAT, [Order].dProcessedOn))) = Convert(DATETIME, Floor(Convert(FLOAT, GetDate())))
GROUP BY [Order].dDispatchBy
,[Order].dProcessedOn
,[Order].Source
,[Order].ExternalReference
,[Order].nOrderId
,[Order].bProcessed
,[Order].CreatedBy
,[Order].CreatedDate
,[Order].dReceievedDate
,[Order].nStatus
,[Order].ReferenceNum
,[Order].SubSource
,OrderItem.fkOrderID
,OrderItem.fkStockID
,OrderItem.nQty
,OrderItem.ItemNumber
,OrderItem.fkLocationId
,OrderItem.fkCompositeParentRowId
,OrderItem.ChannelSKU
,OrderItem.fkStockItemId
,OrderItem.fkStockItemId_processed
,OrderItem.DispatchStockUnitCost
,OrderItem.ShippingCost
,OrderItem.SalesTax
答案 1 :(得分:0)
order1.productcode1,等等等等 order2.productcode2,等等等等 order3.productcode2,等等等等 order4.productcode1,等等等等 order5.productcode1,等等等等 order6.productcode1,等等等等 order7.productcode1等,等
我想知道下面的
order1.productcode1,等等等等,5 order2.productcode2,等等等等,2- order3.productcode2,等等等等,2- order4.productcode1,等等等等,5 order5.productcode1,等等等等,5 order6.productcode1,等等等等,5 order7.productcode1,等等等等,5
因为productcode1在整个记录集中被看到5次,所以会说5
答案 2 :(得分:0)
我解决了这个问题,我必须首先制作一个视图,然后使用该视图
选择 计数(*), StockItem.ItemTitle 从 view_name左连接 StockItem 在view_name.ItemNumber = StockItem.ItemNumber 通过...分组 StockItem.ItemTitle;
有没有人知道制作临时表的另一种方法,我的服务器不允许 或替换视图,我不能删除
我想我想分步进行sql,所以1结果不是那么复杂