SQL 连接查询以获取借方余额不等于 0 的借方余额的项目名称、日期和总和?
Posted
技术标签:
【中文标题】SQL 连接查询以获取借方余额不等于 0 的借方余额的项目名称、日期和总和?【英文标题】:SQL Join Query to Get Item Name , Date and Sum of Debit Balance where Debit balance Not Equal to 0? 【发布时间】:2015-07-11 12:30:56 【问题描述】:SELECT dbo.items.NAME,
CONVERT(VARCHAR(20), dbo.warehouse.date, 101)AS Date,
Sum (dbo.warehouse.debit) AS Quantity
FROM dbo.warehouse
INNER JOIN dbo.items
ON dbo.warehouse.businessunitid = dbo.items.businessunitid
AND dbo.warehouse.itemid = dbo.items.itemid
GROUP BY dbo.items.NAME,
CONVERT(VARCHAR(20), dbo.warehouse.date, 101)
SQL 连接查询以获取借方余额不等于 0 的借方余额的项目名称、日期和总和
【问题讨论】:
【参考方案1】:看起来您正在使用 SQL Server。
SELECT i.NAME,
CONVERT(VARCHAR(20), w.date, 101 ) AS Date,
Sum(w.debit) AS Quantity
FROM dbo.warehouse w INNER JOIN
dbo.items i
ON w.businessunitid = i.businessunitid AND
w.itemid = i.itemid
GROUP BY i.NAME, CONVERT(VARCHAR(20), w.date, 101)
HAVING Sum(w.debit) > 0;
这假设w.debit
永远不会是负数。 (在金融应用程序中,美元金额通常总是正数。)当然,如果它可以是负数,您可能希望:
HAVING Sum(w.debit) <> 0;
或:
HAVING Sum(w.debit) < 0;
视情况而定。
在许多其他数据库中,您可以在HAVING
子句中使用别名:
HAVING Quantity > 0
但 SQL Server 不支持此功能。
还要注意表别名的使用。这样可以更轻松地编写和读取查询。
【讨论】:
小心,匹配问题应该是HAVING Sum(w.debit) <> 0;
【参考方案2】:
您正在寻找有子句。将此附加到您的查询中:
HAVING Sum (dbo.warehouse.debit) <> 0
引用 HAVING (Transact-SQL) docs -- 你的 sql 看起来像 t-sql --
HAVING (Transact-SQL)
指定组或聚合的搜索条件。 HAVING 只能与 SELECT 语句一起使用。 HAVING 通常用于 GROUP BY 子句。当不使用 GROUP BY 时,HAVING 的行为类似于 WHERE 子句。
【讨论】:
以上是关于SQL 连接查询以获取借方余额不等于 0 的借方余额的项目名称、日期和总和?的主要内容,如果未能解决你的问题,请参考以下文章