Запрос Sql на основе тех же значений - PullRequest
0 голосов
/ 09 июля 2019

у меня есть таблица, как показано ниже

encno  payername payment adjustment
1        ahp1      -0.00   -180
1        map1      -112    -220
2        ahp2       0.20    0.23
2        map1       null    null
3        ahp3       0.20    0.23
3        map2       null    null

Мой запрос - получить встречу не там, где карта пуста. но наряду с этой встречей нет, он также должен отображать запись ахп. coz ahp и map будут иметь тот же код, что и в примере. Просьба помочь

ожидаемый результат

encno     payername   payment adjustment
    2        ahp2       0.20    0.23
    2        map1       null    null
    3        ahp3       0.20    0.23
    3        map2       null    null

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Я полагаю, что это то, что вы запрашиваете, вам нужны записи, где payername похож на map, а столбцы payment и adjustment равны NULL, и вы также хотите, чтобы запись с таким жеencno число, но payername похоже на ahp.Если это так, этот запрос сделает это:

SELECT mapTable.*,
    ahpTable.* 
FROM #your table name# AS mapTable
JOIN #your table name# AS ahpTable ON aphTable.encno = mapTable.encno
    AND ahpTable.payername <> mapTable.payername
WHERE mapTable.payername LIKE 'map%'
    AND mapTable.payment IS NULL
    AND mapTable.adjustment IS NULL
ORDER BY mapTable.encno, ahpTable.encno
0 голосов
/ 09 июля 2019

Вы получите ecno s, которые вам нужны с этим запросом:

select ecno from tablename
where payment is null and adjustment is null

Таким образом, вы можете использовать его с оператором IN:

select * from tablename
where ecno in (
  select ecno from tablename
  where payment is null and adjustment is null
)
...