Sql 找出哪些医嘱ID是0$付款总额

Sql 找出哪些医嘱ID是0$付款总额,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我需要一些帮助来编写SQL 2012查询,该查询将帮助我查找并标记因冲销而支付的0.00澳元的订单ID 到目前为止,我已经: Select Distinct a.orderID, a.orderPaid, (Select SUM((c1.linePrice + c1.lineShippingCost + c1.lineTaxCost + c1.lineOptionCost) * c1.lineQuantity) From vwSelectOrderLineIte

我需要一些帮助来编写SQL 2012查询,该查询将帮助我查找并标记因冲销而支付的0.00澳元的订单ID

到目前为止,我已经:

Select Distinct a.orderID, a.orderPaid,
    (Select SUM((c1.linePrice + c1.lineShippingCost + c1.lineTaxCost + c1.lineOptionCost) * c1.lineQuantity) 
            From vwSelectOrderLineItems c1 Where c1.orderID = a.orderID) As OrderAmount,
    (Select SUM(b1.payAmount) FROM vwSelectOrderPayments b1 Where b1.orderID = a.orderID) as Payment,
    1 As IsReversal
From vwSelectOrders a
Left Outer Join vwSelectOrderPayments b On b.orderID = a.orderID
Where b.payValid = 1 AND a.orderPaid = 0
这是返回给我一些订单的0美元付款。当我用这些记录的orderID查询付款表时,我可以看到有2笔付款已过账。。。1原始付款,2撤销

如何标记为0美元付款的
订单

奥德斯 订单行项目 订单付款 意见 注 我无法更改表结构

SELECT distinct a.orderid,
                a.orderPaid,
                c.OrderAmount
                d.Payment
From vwSelectOrders AS a
INNER JOIN ( Select SUM((linePrice + lineShippingCost + lineTaxCost + lineOptionCost) * lineQuantity) As orderAmount,OrderID
             From vwSelectOrderLineItems group by orderid) AS C on c.orderID = a.orderID
INNER JOIN (Select SUM(payAmount) as Payment,orderID FROM vwSelectOrderPayments WHERE isnull(SUM(PayAmount),0) > 0 GROUP BY OrderID) AS d ON d.orderID = a.orderID
Left Outer Join vwSelectOrderPayments b On b.orderID = a.orderID
Where b.payValid = 1 AND a.orderPaid = 0 AND 

这是一个更好的查询,因为您不必向我们提供相关子查询。相关查询是指子查询引用outerquery行时的查询。这不是最优的,因为outerquery运行的每一行都将执行相关子查询。一旦您给我们提供了表定义,我们可能就可以修复查询的总体数据返回。

您能给我们提供表定义吗?如果您正在执行RBAR查询,这将非常糟糕。一旦我们得到表定义,我们也可以帮助您。视图的定义是什么?问题编辑为them@07th在Web设计中,编译时错误是固定的。请注意,您应该查看所有剪切粘贴并直接在IDE中运行的代码。@o7thWebDesign,更正它并不能解决您的问题。我现在正在做那件事。。。无意冒犯:)@o7thWebDesign没问题。当你有一分钟的时间时,你会给出视图的定义吗in@o7thWebDesign试一试,这将删除付款字段中付款为0或为空的所有项目。
CREATE TABLE [dbo].[TblOrderLineItems](
    [lineID] [bigint] IDENTITY(1,1) NOT NULL,
    [orderID] [bigint] NOT NULL,
    [lineQuantity] [int] NOT NULL,
    [linePrice] [money] NOT NULL,
    [lineShippingCost] [money] NOT NULL,
    [lineTaxCost] [money] NOT NULL,
    [lineOptionCost] [money] NOT NULL,
 CONSTRAINT [PK_TblOrderLineItems] PRIMARY KEY CLUSTERED 
(
    [lineID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 50) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

ALTER TABLE [dbo].[TblOrderLineItems] ADD  CONSTRAINT [DF_TblOrderLineItems_lineShippingCost]  DEFAULT ((0)) FOR [lineShippingCost]
GO

ALTER TABLE [dbo].[TblOrderLineItems] ADD  CONSTRAINT [DF_TblOrderLineItems_lineTaxCost]  DEFAULT ((0)) FOR [lineTaxCost]
GO

ALTER TABLE [dbo].[TblOrderLineItems] ADD  CONSTRAINT [DF_TblOrderLineItems_lineOptionCost]  DEFAULT ((0)) FOR [lineOptionCost]
GO
CREATE TABLE [dbo].[TblOrderPayments](
    [paymentID] [bigint] IDENTITY(1,1) NOT NULL,
    [orderID] [bigint] NOT NULL,
    [payAmount] [money] NOT NULL,
    [payPosted] [datetime] NOT NULL,
    [payValid] [bit] NOT NULL,
 CONSTRAINT [PK_TblOrderPayments] PRIMARY KEY CLUSTERED 
(
    [paymentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 50) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

ALTER TABLE [dbo].[TblOrderPayments] ADD  CONSTRAINT [DF_TblOrderPayments_payValid]  DEFAULT ((0)) FOR [payValid]
GO
CREATE VIEW [dbo].[vwSelectOrderLineItems] AS 
SELECT linePrice, lineShippingCost, lineTaxCost, lineOptionCost, lineQuantity 
FROM [dbo].[TblOrderLineItems]

CREATE VIEW [dbo].[vwSelectOrderPayments] AS
SELECT paymentID, orderID, payAmount, payValid
FROM dbo.TblOrderPayments

CREATE VIEW [dbo].[vwSelectOrders] AS
SELECT orderID , orderPaid
FROM dbo.TblOrders
SELECT distinct a.orderid,
                a.orderPaid,
                c.OrderAmount
                d.Payment
From vwSelectOrders AS a
INNER JOIN ( Select SUM((linePrice + lineShippingCost + lineTaxCost + lineOptionCost) * lineQuantity) As orderAmount,OrderID
             From vwSelectOrderLineItems group by orderid) AS C on c.orderID = a.orderID
INNER JOIN (Select SUM(payAmount) as Payment,orderID FROM vwSelectOrderPayments WHERE isnull(SUM(PayAmount),0) > 0 GROUP BY OrderID) AS d ON d.orderID = a.orderID
Left Outer Join vwSelectOrderPayments b On b.orderID = a.orderID
Where b.payValid = 1 AND a.orderPaid = 0 AND