【发布时间】:2015-01-12 11:09:23
【问题描述】:
目标: 了解我们是否在不同的采购订单中多次购买了重复的 StockCodes 或 Stock Description
所以,如果我们在采购订单 1 和采购订单 2 上购买 Part ABC,它应该返回结果
采购订单、零件编号、数量
采购订单1、采购订单2、ABC、2
我只是不知道如何将整个代码组合在一起,更重要的是,如果不滚动查看所有结果,我如何知道它是否发生在超过 1 个采购订单上,也可能与 Multiple (有 Count) 语句,就像我似乎只在 StockCode 中所做的那样
SELECT t1.PurchaseOrder,
t1.MStockCode,
Count(t1.MStockCode) AS SCCount,
t1.MStockDes,
Count(t1.MStockDes) AS DescCount
FROM PorMasterDetail t1
INNER JOIN PorMasterHdr t2
ON t1.PurchaseOrder = t2.PurchaseOrder
WHERE Year(t2.OrderEntryDate) = Year(Getdate())
AND Month(t2.OrderEntryDate) = Month(Getdate())
GROUP BY t1.PurchaseOrder,
t1.MStockCode,
t1.MStockDes
HAVING Count(t1.MStockCode) > 1
使用回复我想出了以下内容
select * from
(
SELECT COUNT(dbo.InvMaster.StockCode) AS Count, dbo.InvMaster.StockCode AS StockCodes,
dbo.PorMasterDetail.PurchaseOrder, dbo.PorMasterHdr.OrderEntryDate
FROM dbo.InvMaster INNER JOIN dbo.PorMasterDetail ON
dbo.InvMaster.StockCode = dbo.PorMasterDetail.MStockCode
INNER JOIN dbo.PorMasterHdr ON dbo.PorMasterDetail.PurchaseOrder = dbo.PorMasterHdr.PurchaseOrder
WHERE YEAR(dbo.PorMasterHdr.OrderEntryDate) = YEAR(GETDATE())
GROUP BY dbo.InvMaster.StockCode, dbo.InvMaster.StockCode,
dbo.PorMasterDetail.PurchaseOrder, dbo.PorMasterHdr.OrderEntryDate
) Count
Where Count.Count > 1
这将返回以下内容,这开始更有帮助
在结果行 2,3,4 中,我们可以看到相同的股票代码 (*30044) 在不同的位置订购了 3 次
采购订单。
我想问题是,是否可以查看是否在 30 天内多次订购了某样东西。 这可能吗?
Count StockCodes PurchaseOrder OrderEntryDate
2 *12.0301.0021 322959 2014-09-08
2 *30044 320559 2014-01-21
8 *30044 321216 2014-03-26
4 *30044 321648 2014-05-08
5 *32317 321216 2014-03-26
4 *4F-130049/TEST 323353 2014-10-22
5 *650-1157/E 322112 2014-06-24
2 *650-1757 321226 2014-03-27
【问题讨论】:
-
在你的结果中,
Purchase Order1, Purchase Order2, ABC, 2,2 应该代表什么? -
选择(你想要的)除了选择(区分你想要的)
-
这是返回的行结果集,因此如果股票代码 ABC 出现在 2 个采购订单上,它将返回它出现的两个采购订单
标签: sql-server count having