2015-11-07 33 views
0

我有两个表格,一个是Customer,另一个是bill查找特定客户未生成帐单的月份和年份

  • 栏目的customercustIDname
  • 栏目的BillcustIDmonthyearamount

生成账单时,都会条目被制成bill表为特定客户与custId。对于每个月都有一个客户账单,但是账单的生成是手动的。

现在在特定月份,我想知道还没有为特定客户生成多少账单。

我是java开发人员,也是SQL的新手,所以我对此一无所知。

数据库:SQLite3

在此先感谢。

我曾尝试:

select Customer.mCustomerId, Bill.Month,Bill.Year 
from Customer 
left outer join 
Bill on Customer.mCustomerId = Bill.mCustomerId 
+0

请出示你到目前为止做了什么。 –

+0

@Rohit'选择Customer.mCustomerId,Bill.Month,Bill.Year from Customer left outer join Bill on Customer.mCustomerId = Bill.mCustomerId'因此,此查询为我提供了该客户的所有客户和账单月份和账单年份。现在我需要客户的月份和年份,直到当前月份没有进行帐单输入 –

+0

SQL为所有客户提供服务,无论他们是否曾经结算过。这不是你想要的。你需要一个日历或统计表。你有没有列出可能的帐单月份的表格?你需要外部连接。如果你不能在飞行中生成一个。你有一个Oracle客户端工具来测试这些东西吗? –

回答

0

通过假设,该月和为客户和金额产生纸币入口每个月为空或手动输入,你可以找到一个客户,这几个月“账单生成,但量为null:

SELECT * FROM Customer c LEFT JOIN Bill b ON c.custid = b.custid WHERE c.custid = 1 AND b.amount IS NULL 

但是,如果你想找到多少个月丢失了在一年内的客户,该查询返回的月缺号:

SELECT (12 - COUNT(b.month)) FROM Customer c LEFT JOIN Bill b ON c.custid = b.custid WHERE c.custid = 1 AND b.year = '2015' 

我希望这些疑问将帮助您

有一个愉快的一天

+0

只有当账单由供应商通过提供的界面为特定客户生成账单时才进入账单。但在某些情况下,他的供应商可能不会为客户创建帐单或忘记为客户生成帐单,这可能会发生很多次。在一个地方,我想显示月份和年份列表供应商的帐单不是针对特定客户生成的。我想这会让你对我的问题有个简单的了解。 –

+0

ın那种情况下,你应该按数字存储月份,并选择月份,年份为期望的客户,然后根据选定的月份以编程方式计算缺失的月份。例如,如果您在2015年为客户选择了1,3,5,6,7,8,9,10个月,则缺失的月份为2,4,11,12 –