Результат DB2 SQL COUNT () из первой таблицы - PullRequest
0 голосов
/ 09 января 2020

Я опубликовал что-то ранее и не объяснил должным образом, что я пытаюсь выполнить sh. Я пытаюсь второй раз.

Я хочу вернуть значение поля из двух разных таблиц, но хочу считать только таблицу. В этом случае таблица @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    |   

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Я не совсем уверен, что именно вы хотите, но если вы хотите, чтобы счет только из первой таблицы, вы можете получить его, используя COUNT(DISTINCT column), как показано ниже:

select
  a.sopseq,
  a.sopnbr,
  b.revusr2, 
  count(distinct a.sopseq) 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.sopseq

Результат:

SOPSEQ  SOPNBR  REVUSR2  AAA
------  ------  -------  ---
   111     123  Mark       1
   111     123  john       1
   333     789  Erik       1

Для справки я использовал скрипт данных:

create table sop (
  sopseq int,
  sopnbr int,
  sopsts varchar(10)
);

insert into sop (sopseq, sopnbr, sopsts) values 
  (111, 123, 'In Review'),
  (222, 456, 'In Review'),
  (333, 789, 'In Review');

create table soprev (
  sopseq int,
  revusr2 varchar(10),
  revsts varchar(10)
);

insert into soprev (sopseq, revusr2, revsts) values
  (111, 'Mark', 'In Review'),
  (111, 'john', 'In Review'),
  (333, 'Erik', 'In Review');
0 голосов
/ 09 января 2020

Попробуйте 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...