SQL Server选择所需的查询帮助

时间:2016-06-17 14:33:01

标签: sql sql-server select

我正在努力构建查询,但很难找到合适的解决方案。这是我的数据......

我有大约10,000条记录 - 我的tblBilling中的帐单。

  • 每条记录的唯一ID号约为10 - 13000.
  • 但我的主键是BillNo,在我的记录中是1。

  • 如果账单已退款,则会在tbl中添加另一行,但在这种情况下BillNo为2.

  • 此外,我还有一个名为AdjType的专栏,可以是A,B,C
    • 当BillNo为2时,AdjType = B
    • 但是对于普通的BillNo 1 - 值为NULL。

所以它看起来像这样......

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的记录。请帮忙!

4 个答案:

答案 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)
    )