首页 > 解决方案 > 第一个表的 DB2 SQL COUNT() 结果

问题描述

我之前发布了一些内容,但没有正确解释我要完成的工作。我正在尝试第二次。

我想从两个不同的表中返回字段值,但只需要表的计数。在这种情况下,@SOP 表。现在它给了我@SOPREV 表的总数。

SELECT A.SOPSEQ, A.SOPNBR, B.REVUSR2 , COUNT(A.SOPSEQ) OVER() AS AAA
  FROM @SOP A
  INNER JOIN @SOPREV B on B.SOPSEQ = A.SOPSEQ
  WHERE UPPER(A.SOPSTS) = 'IN REVIEW' AND UPPER(B.REVSTS) = 'IN REVIEW'
  GROUP BY A.SOPSEQ, A.SOPNBR, B.REVUSR2
  ORDER BY A.SOPNBR, A.SOPREV

  OFFSET (:StartingRow - 1) * :NbrOfRows ROWS
  FETCH NEXT :NbrOfRows + 1 ROWS ONLY; 

表@SOP:

|SOPSEQ   |SOPNBR |SOPSTS |     
|111      |123    |Review |          
|222      |456    |Review |          
|333      |789    |Review |   

表@SOPREV:

|SOPSEQ   |REVUSR2 |  
|111      |Mark    |         
|111      |John    |         
|333      |Erik    |   

标签: sqldb2

解决方案


尝试 LEFT JOIN 而不是 INNER JOIN

   SELECT A.SOPSEQ, A.SOPNBR, B.REVUSR2 , COUNT(A.SOPSEQ) OVER() AS AAA
   FROM @SOP A
   LEFT JOIN @SOPREV B on A.SOPSEQ = B.SOPSEQ 
   WHERE UPPER(A.SOPSTS) = 'IN REVIEW' AND UPPER(B.REVSTS) = 'IN REVIEW'
   GROUP BY A.SOPSEQ, A.SOPNBR, B.REVUSR2
   ORDER BY A.SOPNBR, A.SOPREV

这将从表@SOP 返回计数。


推荐阅读