【问题标题】:Get the difference returned from two queries as the return of one query获取两个查询返回的差值作为一个查询的返回
【发布时间】:2014-03-27 19:50:17
【问题描述】:

使用以下查询:

Select Count(ID)
FROM Used
Where 
    ID = 54
    AND QTY = 1.875
    AND DateReceived = '2014-03-27 00:00:00'
    AND VendorID = 12400
    AND WithDrawn = 0;


Select Count(ID)
FROM Used
Where 
    ID = 54
    AND QTY = 1.875
    AND DateReceived = '2014-03-27 00:00:00'
    AND VendorID = 12400
    AND WithDrawn = 1;

如何将它们组合成一个返回计数差异的 wuery?

【问题讨论】:

    标签: sql select sqlite difference


    【解决方案1】:

    你可以只减去这两个值:

    SELECT (SELECT COUNT(ID)
            FROM Used
            WHERE ID = 54
              AND QTY = 1.875
              AND DateReceived = '2014-03-27 00:00:00'
              AND VendorID = 12400
              AND WithDrawn = 0) -
           (SELECT COUNT(ID)
            FROM Used
            WHERE ID = 54
              AND QTY = 1.875
              AND DateReceived = '2014-03-27 00:00:00'
              AND VendorID = 12400
              AND WithDrawn = 1);
    

    或者,为每条记录构造一个 +1 或 -1 的值,然后取其总和:

    SELECT SUM(CASE WithDrawn WHEN 0 THEN 1 ELSE -1 END)
    FROM Used
    WHERE ID = 54
      AND QTY = 1.875
      AND DateReceived = '2014-03-27 00:00:00'
      AND VendorID = 12400;
    

    【讨论】:

      【解决方案2】:

      或者,您可以在 1 次扫描中完成此操作...

      SELECT 
          (Count(CASE 
          WHEN WithDrawn = 0
              THEN ID END) 
              - 
          Count(CASE 
          WHEN WithDrawn = 1
              THEN ID
          END)) RESULT
      FROM Used
      WHERE ID = 54
          AND QTY = 1.875
          AND DateReceived = '2014-03-27 00:00:00'
          AND VendorID = 12400;
      

      【讨论】:

        猜你喜欢
        • 2011-01-05
        • 1970-01-01
        • 1970-01-01
        • 2016-08-25
        • 2014-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多