【问题标题】:SQL Join Query to Get Item Name , Date and Sum of Debit Balance where Debit balance Not Equal to 0?SQL 连接查询以获取借方余额不等于 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 的借方余额的项目名称、日期和总和

【问题讨论】:

    标签: sql sql-server


    【解决方案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) &lt;&gt; 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 子句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多