我正在努力构建查询,但很难找到合适的解决方案。这是我的数据......
我有大约10,000条记录 - 我的tblBilling
中的帐单。
但我的主键是BillNo
,在我的记录中是1。
如果账单已退款,则会在tbl中添加另一行,但在这种情况下BillNo为2.
AdjType
的专栏,可以是A,B,C
所以它看起来像这样......
tblBilling
ID BillNo Units TotalPaid AdjType
-------------------------------------
10 2 17 230 NULL
所以这是BillNO为1的正常比尔 - 这意味着它是一个付费账单。
此外,您可能拥有BIllNO2,这很可能是退款,看起来像这样....
ID BillNo Units TotalPaid AdjType
--------------------------------------
10 2 -17 -230 B
所以我们在这里否定单位因为退款,在这种情况下ADJType = B
如果我从tblBilling中选择*,ID = 10,我就得到这个....
ID BillNo Units TotalPaid AdjType
-----------------------------------------
10 1 17 230 NULL
10 2 -17 -230 B
现在我的主要目标是从tblBilling
中选择所有记录,但是我不想选择任何与其关联的BillNo 2的记录。基本上如果记录有BillNO = 1 - 那就是我需要的记录。没有BillNo = 2的记录。请帮忙!
答案 0 :(得分:2)
select *
from tblBilling t1
where t1.AdjType is NULL
and not exists(select 1 from tblBilling t2
where t2.id = t1.id and t2.AdjType = 'B')
答案 1 :(得分:1)
SELECT *
FROM
tblBilling
WHERE
ID NOT IN (SELECT ID FROM tblBilling WHERE BillNo = 2)
答案 2 :(得分:1)
# Changed to a capitol letter as that is more conventional
class Outer:
name = ""
def __init__(self, name):
self.name = name
def sayHello(self):
print ("Hello" + self.name)
class Inner1:
def __init__(self, name):
self.name = name
class Inner2(Inner1):
pass
class Inner3(Inner1):
pass
newOuter = Outer("newOuter")
newInner2 = Outer.Inner2("newInner2")
答案 3 :(得分:1)
SELECT *
FROM tblBilling A
WHERE A.BillNo = 1
AND NOT EXISTS
(
SELECT *
FROM tblBilling B
WHERE A.id=B.id
AND B.BillNo =2
AND A.Units= (-1 * B.Units)
AND A.TotalPaid= (-1 * B.TotalPaid)
)