我是数据库的新手,并尝试使用存储过程的一些东西。我在我的存储过程中使用3tbales - Customer,OrderDetails和Order。我正在根据orderdetails表的数量字段显示所有未处理的订单。无论何时,处理特定订单,在我的OrderDetail表中都有fillInfo字段,其中从Order表中插入多个purchaseOrder编号。数据正在显示但是很快因为即使处理了1个数量,那么与该特定订单相关的数据也会消失。假设,如果客户按1个订单订购10个数量,如果我处理其中2个,则该订单仍应显示在未处理的订单列表中,因为8个数量是仍然有待交付给客户。
我的orderdetail表看起来像
SELECT TOP 1000 [lineID]
,[orderID]
,[itemNumber]
,[itemDesc]
,[qty]
,[price]
,[priceType]
,[contract]
,[supplierPartID]
,[uom]
,[classDomain]
,[classValue]
,[comments]
,[shipping]
,[tax]
,[reqDeliveryDate]
,[fillInfo]
,[invoiceID]
,[Version]
,[productid]
,[eta]
,[lineOrderID]
FROM [bfdb].[dbo].[OrderDetails]
这里的orderid来自订单表,其中订单表看起来像
SELECT TOP 1000 [orderID]
,[customerID]
,[billAddressID]
,[shipAddressID]
,[orderDate]
,[employeeID]
,[salesTax]
,[poNumber]
,[dueDate]
,[terms]
,[shipMethod]
,[shippingFee]
,[shippingNotes]
,[oStatus]
,[createDate]
,[source]
,[comments]
,[cardType]
,[cardNumber]
,[expMonth]
,[expYear]
,[nameOnCard]
,[cvvCode]
,[cancelDate]
,[total]
,[url]
,[role]
,[consolidationPoint]
,[cxmlData]
,[authStatus]
,[authCode]
,[transactionID]
,[authDateTime]
,[avsResponse]
,[cvvResponse]
,[Version]
,[couponCode]
,[discountAmt]
,[cageCode]
,[awardID]
,[versionNumber]
,[invoiceEmail]
,[trackingEmail]
FROM [bfdb].[dbo].[Orders]
1个orderid可以有多个项目编号,同一采购订单的数量很大
我附加了存储过程结果的快照和orderdetails表数据enter image description here(存储过程结果数据) enter image description here(订单明细表数据)
我的存储过程是
SELECT
o.orderID, o.orderDate, o.oStatus, e.userName, o.poNumber,
c.customerName, c.company, o.source,
((SELECT SUM(od.price * od.qty) FROM OrderDetails od WHERE o.orderID = od.orderID)
+ o.salesTax + o.shippingFee) As Total,
((SELECT COUNT(od.orderID) FROM OrderDetails od WHERE o.orderID = od.orderID)
- (SELECT COUNT(od.orderID) FROM OrderDetails od WHERE o.orderID = od.orderID AND (fillInfo != '' OR fillInfo != null))) As Filled
FROM
Orders o
JOIN
Customers c on o.customerID = c.customerID
JOIN
Employees e on o.employeeID = e.employeeID
WHERE
(o.employeeID > 0 AND o.oStatus = 'Active'
AND (((SELECT COUNT(od.orderID) FROM OrderDetails od WHERE o.orderID = od.orderID) - (SELECT COUNT(od.orderID) FROM OrderDetails od WHERE o.orderID = od.orderID AND (fillInfo != '' OR fillInfo != null))) > 0))
ORDER BY
o.orderID
存储过程中有填充列,显示未处理的总量。但是我仍然无法显示剩余数量的订单,因为只要为特定订单处理1个数量,来自未处理列表的数据就会消失。未处理列表中的数据显示在上面的存储过程中。
答案 0 :(得分:0)
我假设“未填充”= fillInfo为空('')或NULL,对吗?在SQL 2008中,您可以使用CTE获取打开的订单列表,然后将您的查询加入CTE:
raw_tweets_stream.py