我有表(aztrd)它包含发票deatils,如itm_code,date,loc_cd ...等等
我使用此查询:
SELECT tr_no,loc_cd FROM AZTRD
WHERE LOC_CD = 1 and tr_ty = 102 and loc = 01 AND LOC_CD NOT IN (SELECT itm_cd WHERE LOC_CD = 2)
GROUP BY TR_NO,LOC_CD
ORDER BY TR_NO
那么如何才能获得有LOC_CD(1)的发票 - 任何LOC_CD都有(1,2)我不想要它们 - 我按你看的那样试试,但这张发票有1件物品,有2件物品 - 所以我不想要它只是想只发票有一个LOC_CD不是两个?
答案 0 :(得分:2)
SQL甚至无法工作。请发布您正在使用的实际SQL。
在此之后做出很多假设:
SELECT tr_no,loc_cd
FROM AZTRD WHERE LOC_CD = 1
AND tr_ty = 102
AND loc = 01
AND itm_cd NOT IN
(SELECT itm_cd FROM AZTRD WHERE LOC_CD = 2)
ORDER BY TR_NO
可能更快的方法是这样的:
SELECT tr_no,loc_cd
FROM AZTRD D
WHERE LOC_CD = 1
and tr_ty = 102
and loc = 01
AND NOT EXISTS (
SELECT 1 FROM AZTRD E WHERE E.itm_cd = D.itm_cd AND E.LOC_CD = 2)
ORDER BY D.TR_NO
答案 1 :(得分:1)
您的描述有点难以阅读,正如ElecticLlama指出的那样,您提供的SQL代码将无法运行...
但是,基于ElecticLlama的解释和代码清理,(如果这对你有帮助,UPVOTE HIS TOO),我认为这些逻辑变化(特别是添加HAVING
子句)可能会给你你的目标: “只想发票只有一个LOC_CD而不是两个”。
SELECT tr_no, location_code = MIN(loc_cd)
FROM AZTRD
WHERE tr_ty = 102
GROUP BY tr_no
HAVING MIN(loc_cd) = MAX(loc_cd)
ORDER BY tr_no
希望有所帮助! ......让我们知道。