Соответствие значений столбца в нескольких строках - PullRequest
1 голос
/ 07 февраля 2020

У меня есть таблица, похожая на эту, и мне нужно посчитать количество заказов, которые были в тот же день, в будущем датированы или не были выполнены. A700 предварительно представлен, а A18 представлен. Они совпадают по уникальному идентификатору. Я думаю, что мне нужно использовать JOIN, но я не уверен, как go об этом. Любые указатели очень ценятся, пока я пытаюсь их решить.

AuditID  |  ActivityDateTime  |  ProductCode  |  UniqueID  |  DeliveryDate
A700            2020-01-01         111111       1234567890      NULL
A700            2020-01-01         111111       2222222222      NULL
A700            2020-01-01         222222       9999999999      NULL
A700            2020-01-01         333333       5555555555      NULL

A18     2020-01-01         112233       1234567890      2020-01-01
A18     2020-01-01         112233       2222222222      2020-01-03
A18     2020-01-01         333333       5555555555      2020-01-03

Результаты:

ProductCode  |  SameDay  |  FutureDay
112233             1            1
333333             0            1
222222             0            0

1 Ответ

0 голосов
/ 07 февраля 2020

Это выглядит для меня как самостоятельное объединение с агрегацией. Примерно так:

select t700.productcode,
       sum(case when t700.ActivityDateTime = t18.DeliveryDate then 1 else 0 end) as sameday,
       sum(case when t700.ActivityDateTime < t18.DeliveryDate then 1 else 0 end) as futureday,
from t t700 join
     t t18
     on t700.uniqueid = t18.uniqueid and
        t700.auditid = 'A700' and
        t18.auditid = 'A18'
group by t700.productcode;

Кажется, что столбец ActivityDateTime содержит компонент времени. Если это так, возможно, вам придется скорректировать сравнения для тех же и будущих дат.

...