возвращаемое значение, когда полный статус появился 2 раза и выше - PullRequest
0 голосов
/ 18 марта 2019

Ori Data = # B

+--------+-------+---------------+---------------+---------------+---------------+----------+
| RowNum | SeqNo |     Name      |  NameReason   |   NameDate    | Date-Of-Birth |  Status  |
+--------+-------+---------------+---------------+---------------+---------------+----------+
|      1 | AAA   | ABC           | A             | 2019-01-01    | 1905-01-01    | Complete |
|      2 | AAA   | 'emptystring' | 'emptystring' | 'emptystring' | 1905-01-01    | Pending  |
|      3 | AAA   | 'emptystring' | 'emptystring' | 'emptystring' | 1905-01-01    | Pending  |
|      4 | AAA   | 'emptystring' | 'emptystring' | 'emptystring' | 1905-01-01    | Pending  |
|      5 | AAA   | 'emptystring' | 'emptystring' | 'emptystring' | 1905-01-01    | Complete |
|        |       |               |               |               |               |          |
|      1 | BBB   | 'emptystring' | 'emptystring' | 'emptystring' | 1970-01-01    | Pending  |
|      2 | BBB   | DEF           | A             | 2019-01-02    | 1970-01-01    | Complete |
|      3 | BBB   | GHI           | A             | 2019-01-03    | 1970-01-01    | Complete |
|      4 | BBB   | ABC           | A             | 2019-01-03    | 1970-01-01    | Complete |
|      5 | BBB   | 'emptystring' | 'emptystring' | 'emptystring' | 1970-01-01    | Pending  |
|        |       |               |               |               |               |          |
|      1 | CCC   | ABC           | A             | 2019-01-01    | 1990-01-01    | Complete |
|      2 | CCC   | 'emptystring' | 'emptystring' | 'emptystring' | 1990-01-01    | Pending  |
|      3 | CCC   | 'emptystring' | 'emptystring' | 'emptystring' | 1990-01-01    | Pending  |
|        |       |               |               |               |               |          |
|      1 | DDD   | 'emptystring' | 'emptystring' | 'emptystring' | 2001-05-02    | Pending  |
|      2 | DDD   | ABC           | A             | 2019-01-01    | 2001-05-02    | Complete |
|      3 | DDD   | 'emptystring' | 'emptystring' | 'emptystring' | 2001-05-02    | Pending  |
+--------+-------+---------------+---------------+---------------+---------------+----------+

Желаемый результат:

+--------+-------+---------------+---------------+---------------+---------------+----------+
| RowNum | SeqNo |     Name      |  NameReason   |   NameDate    | Date-Of-Birth |  Status  |
+--------+-------+---------------+---------------+---------------+---------------+----------+
|      1 | AAA   | ABC           | A             | 2019-01-01    | 1905-01-01    | Complete |
|      2 | AAA   | 'emptystring' | 'emptystring' | 'emptystring' | 1905-01-01    | Pending  |
|      3 | AAA   | 'emptystring' | 'emptystring' | 'emptystring' | 1905-01-01    | Pending  |
|      4 | AAA   | 'emptystring' | 'emptystring' | 'emptystring' | 1905-01-01    | Pending  |
|      5 | AAA   | 'emptystring' | 'emptystring' | 'emptystring' | 1905-01-01    | Complete |
|        |       |               |               |               |               |          |
|      1 | BBB   | 'emptystring' | 'emptystring' | 'emptystring' | 1970-01-01    | Pending  |
|      2 | BBB   | DEF           | A             | 2019-01-02    | 1970-01-01    | Complete |
|      3 | BBB   | GHI           | A             | 2019-01-03    | 1970-01-01    | Complete |
|      4 | BBB   | ABC           | A             | 2019-01-03    | 1970-01-01    | Complete |
|      5 | BBB   | 'emptystring' | 'emptystring' | 'emptystring' | 1970-01-01    | Pending  |
+--------+-------+---------------+---------------+---------------+---------------+----------+

RowNum - это функция row_num, которая фильтруется правильно.Я использую rownum, чтобы разделить seqno, порядок даты рождения по дате.Эти данные взяты из таблицы #A, и я вставляю их в # B.

Вопрос: не имеет значения, сколько у меня num строк, поскольку статус = 'Completed' появился 2 раза ивыше, я хочу эти данные. Если status = 'Completed' появился 1 раз, просто не хочу данных.

Причина, по которой мой желаемый результат не имеет смысла, потому что я хочу выяснить какие-либо изменения вмежду и я буду отображать его, если получил изменения (которые я имею в виду в другом скрипте)

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Насколько я понимаю, вы хотите что-то в этом роде.

declare @Something table
(
    RowNum int
    , SeqNo char(3)
    , Name varchar(20)
    , NameReason varchar(20)
    , NameDate varchar(20)
    , DateOfBirth date
    , Status varchar(20)
)

insert @Something values
(1, 'AAA', 'ABC        ', 'A          ', '2019-01-01 ', '1905-01-01', 'Complete')
, (2, 'AAA', 'emptystring', 'emptystring', 'emptystring', '1905-01-01', 'Pending ')
, (3, 'AAA', 'emptystring', 'emptystring', 'emptystring', '1905-01-01', 'Pending ')
, (4, 'AAA', 'emptystring', 'emptystring', 'emptystring', '1905-01-01', 'Pending ')
, (5, 'AAA', 'emptystring', 'emptystring', 'emptystring', '1905-01-01', 'Complete')
, (1, 'BBB', 'emptystring', 'emptystring', 'emptystring', '1970-01-01', 'Pending ')
, (2, 'BBB', 'DEF        ', 'A          ', '2019-01-02 ', '1970-01-01', 'Complete')
, (3, 'BBB', 'GHI        ', 'A          ', '2019-01-03 ', '1970-01-01', 'Complete')
, (4, 'BBB', 'ABC        ', 'A          ', '2019-01-03 ', '1970-01-01', 'Complete')
, (5, 'BBB', 'emptystring', 'emptystring', 'emptystring', '1970-01-01', 'Pending ')
, (1, 'CCC', 'ABC        ', 'A          ', '2019-01-01 ', '1990-01-01', 'Complete')
, (2, 'CCC', 'emptystring', 'emptystring', 'emptystring', '1990-01-01', 'Pending ')
, (3, 'CCC', 'emptystring', 'emptystring', 'emptystring', '1990-01-01', 'Pending ')
, (1, 'DDD', 'emptystring', 'emptystring', 'emptystring', '2001-05-02', 'Pending ')
, (2, 'DDD', 'ABC        ', 'A          ', '2019-01-01 ', '2001-05-02', 'Complete')
, (3, 'DDD', 'emptystring', 'emptystring', 'emptystring', '2001-05-02', 'Pending ')

select *
from @Something s
where exists 
(
    select s2.SeqNo
    from @Something s2
    where s2.SeqNo = s.SeqNo
        and s2.Status = 'Complete'
    group by s2.SeqNo
    having count(*) > 1
)
0 голосов
/ 18 марта 2019

, если вы просто хотите, чтобы все строки для данного SeqNo имели более 1 статуса «Завершено»:

SELECT
  *
FROM
  B
WHERE
  SeqNo IN (
    SELECT
      SeqNo
    FROM
      B
    WHERE
      Status='Completed'
    GROUP BY
      SeqNo
    HAVING
      COUNT(*) > 1); 

Это синтаксис Oracle.Надеюсь, у вас есть индекс по полю SeqNo.

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