下面是一个Loans
表:
EmployeeId LoanCatId LoanSubCatId LoanDate
------------------------------------------------
1 4 1 19990125
3 3 2 20101210
6 1 1 19910224
4 4 2 20120219
1 3 1 19920214
2 4 2 19930614
1 3 2 19840705
6 1 1 20030917
5 1 1 19900204
3 1 2 20181113
其中字段EmployeeId
、LoanCatId
和LoanSubCatId
分别引用以下表的ID作为外键:
表Employees
:
EmployeeId Name
------------------
1 John
2 Jack
3 Alex
4 Fred
5 Danny
6 Russel
表LoanCategories
:
CategoryId CategoryName
------------------------
1 CA
2 CB
3 CC
4 CD
表LoanSubCategories
:
CategoryId CategoryName
------------------------
1 SCA
2 SCB
我试图通过指定LoanDate
来获取下面的表,例如,'19990125'(Loans
表的第一行):
CategoryName SubCategoryName Count
-------------------------------------
CA SCA 0
CA SCB 0
CB SCA 0
CB SCB 0
CC SCA 0
CC SCB 0
CD SCA 1
CD SCB 0
数据库是SQLite
。先谢谢你了。
2条答案
按热度按时间ldfqzlk81#
您需要
LoanCategories
和LoanSubCategories
的CROSS
联接来获取类别和子类别的所有组合,并需要LEFT
联接到Loans
以获取所需的特定日期。最后,您必须为每个类别/子类别进行聚合:
参见demo。
mkh04yzy2#
在categories表上使用
CROSS JOIN
获得所有可能的组合,使用right join
合并数据,使用条件聚合获得所需的结果。Demo here