Sql server 如何检查以下cte中是否没有应付款项
CTE的工作令人敬畏,但我不知道在哪里把条件,如果销售是第一 我希望在这种情况下,如果每个accountid的借方数超过1,sum函数可以工作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,
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中的表达式,则它是一个逻辑运算符:如果这些条件为真,则执行这些操作,否则执行这些操作。在语句的中间,如果你不能把<代码>放在,那么我不确定你想解决什么问题。换句话说,好地使用别名、空白和断线会使你的查询更容易阅读。这些东西很乱,很难理解。(我已经做了一些格式化,但我建议您开始使用别名。)此外,在持久化对象中使用*
也是一个坏主意<代码>*不是一个神奇的“所有列”操作符,它的行为会根据对象类型而变化,当底层对象发生变化时,可能会导致意外行为。