我有一个如下表
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
我的查询是在地图为null的情况下,没有遭遇。但如果没有遇到,它也应该显示ahp记录。 coz ahp和map将具有相同的enc no,如示例所示。 请帮助
预期结果
encno payername payment adjustment
2 ahp2 0.20 0.23
2 map1 null null
3 ahp3 0.20 0.23
3 map2 null null
答案 0 :(得分:0)
通过此查询,您将获得所需的ecno
:
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
)
答案 1 :(得分:0)
我相信这是您所要的,您想要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