Sql server 如何检查以下cte中是否没有应付款项

Sql server 如何检查以下cte中是否没有应付款项,sql-server,if-statement,stored-procedures,common-table-expression,Sql Server,If Statement,Stored Procedures,Common Table Expression,CTE的工作令人敬畏,但我不知道在哪里把条件,如果销售是第一 我希望在这种情况下,如果每个accountid的借方数超过1,sum函数可以工作 CREATE PROCEDURE [dbo].[counter_bills] @SDate date, @enddate date AS BEGIN; WITH CUST AS (SELECT customer.customername,

CTE的工作令人敬畏,但我不知道在哪里把条件,如果销售是第一 我希望在这种情况下,如果每个accountid的借方数超过1,sum函数可以工作

CREATE PROCEDURE [dbo].[counter_bills] @SDate date,
                                       @enddate date
AS
BEGIN;

    WITH
    CUST AS
        (SELECT customer.customername,
                customer.customercontact,
                customer.customeraddress,
                account.account_id,
                account.account_type,
                customer.customerid
         FROM account
              JOIN customer ON customer.customerid = account.customerid),
    journal AS
        (SELECT SUM(journal_entry.debit) - SUM(journal_entry.credit) AS [dues],
                journal_entry.account_id AS [journal account id]
         FROM journal_entry
         GROUP BY journal_entry.account_id),
    SALES AS
        (SELECT sale.saleid,
                sale.totalpaid,
                Stock.itemname AS item,
                invoice.saleprice AS SalePrice,
                invoice.qty,
                invoice.StockID AS [invoice Stock id],
                invoice.saleprice AS [invoice saleprice],
                sale.date,
                Stock.size,
                sale.customerid AS [cust sale id ]
         FROM invoice
              JOIN Stock ON invoice.StockID = Stock.StockID
              JOIN sale ON invoice.saleid = sale.saleid
              JOIN Our_orders ON Stock.orderID = Our_orders.orderID
              JOIN vendor ON Our_orders.VendorID = vendor.VendorID
         WHERE sale.date BETWEEN @SDate AND @enddate)
    SELECT *
    FROM CUST
         RIGHT JOIN SALES ON CUST.customerid = SALES.[cust sale id ]
         LEFT JOIN journal ON journal.[journal account id] = CUST.account_id
    ORDER BY SALES.SaleID DESC;
END;

如果
不是t-SQL中的表达式,则它是一个逻辑运算符:如果这些条件为真,则执行这些操作,否则执行这些操作。在语句的中间,如果你不能把<代码>放在,那么我不确定你想解决什么问题。换句话说,好地使用别名、空白和断线会使你的查询更容易阅读。这些东西很乱,很难理解。(我已经做了一些格式化,但我建议您开始使用别名。)此外,在持久化对象中使用
*
也是一个坏主意<代码>*不是一个神奇的“所有列”操作符,它的行为会根据对象类型而变化,当底层对象发生变化时,可能会导致意外行为。