我正在尝试使用能够计算和汇总各种计数的功能或视图,同时能够搜索多对多的联盟。
以下是一个示例数据集:
Invoice Table:
InvoiceID LocationID StatusID
1 5 1
2 5 1
3 5 1
4 5 2
5 7 2
5 7 1
5 7 2
Group Table:
GroupID GroupName
1 Group 1
2 Group 2
GroupToLocation Table:
GroupToLocationID GroupID LocationID
1 1 5
2 2 5
3 2 7
我已经达到了可以总结每个位置的各种状态并得到这个的地步:
LocationID Status1 Status2
5 3 1
7 1 2
位置5有3个发票,状态为1,1个发票状态为2,而位置7有1个状态1和2个状态2
有两个组,而位置5在两个组中,而位置7仅在第二个组中。我需要能够设置它,我可以附加一个这样的where语句:
select * from vw_GroupCounts
where GroupName = 'Group 2'
或
select Invoice, SUM(*) from vw_GroupCounts
where GroupName = 'Group 2'
这导致只获得位置7.每当我这样做时,由于我必须使用左连接或沿着这些线的东西,计数对于位置附属的每个组都是重复的。我知道我可以按照子查询的方式执行某些操作并将GroupName传入其中,但我正在使用的系统使用动态查询构建器,该构建器根据用户输入附加WHERE语句。
我不介意在函数中使用视图,函数或任何数量的函数,但我希望有一种方法可以实现我正在寻找的东西。