我想要使用不同的表和列名加入多个查询,同时我需要显示重复字段的数量,如下所示。
查询是:(Proj_uid
在我需要匹配的所有表中都很常见)
select proj_name,Agency,District,Division,Proj_status from tempproj
需要加入2个表来获得pay80的结果,而payment20包含带有重复值的billtype列,我想要计算这些值
SELECT p.Proj_name,p.billtype, COUNT(1) as CNT
FROM payment80 p where billtype='civil'
GROUP BY Proj_name, billtype
(这是通过使用单个表,但我希望通过加入payment80和payment20表来获得此结果)
SELECT p.Proj_name,p.billtype, COUNT(1) as CNT
FROM payment80 p where billtype='Electric'
GROUP BY Proj_name, billtype
(我想要计算的billtype值,只显示一些重复的记录)
Proj_Name billtype
------------------------
policegruha civil
gruhayojna Electric
policegruha civil
dcoffice civil
spoffice Electric
dcoffice civil
3)从付款中选择billtype,这里我还需要计算重复值并显示在billtype
中重复值将在billtype中,其中包含以下内容:
最后我想要一个像这样的输出:
Proj_name Agency District Division Projstatus Civilbilltype Electricbilltype
policegruha kumar chitradurga davangere ongoing 3 1
gruhayojna khan ballary ballary completed 2 2
Atered john bangalore bangalore ongoing 2 4
dcoffice ravi mangalore mangalore ongoing 1 2
spoffice mary chitradurga davangere completed 3 4
hostel jack ballary ballary completed 3 3
univercity kumar bangalore bangalore ongoing 4 2
mess Raj mysore mysore ongoing 2 1
policestation khan mysore mysore ongoing 1 4
conferencehall Rosy davangere davangere ongoing 2 2
答案 0 :(得分:0)
您正在加入三个单独的表格。一个是物理的,tempproj
,另外两个是虚拟的:它们是聚合。
这是技术。
SELECT p.proj_name,p.Agency,p.District,p.Division,p.Proj_status,
Civilbills.billcount as Civilbills,
Electribills.billcount as Electricbills
FROM tempproj p
LEFT JOIN (
SELECT Proj_name, COUNT(*) as billcount
FROM payment80
where billtype='civil'
GROUP BY Proj_name
) Civilbills ON Civilbills.Proj_name = p.proj_name
LEFT JOIN (
SELECT Proj_name, COUNT(*) as billcount
FROM payment80
where billtype='Electric'
GROUP BY Proj_name
) Electricbills ON Electricbills.Proj_name = p.proj_name
您的要求包括payment80
表中的两个单独的聚合。 LEFT JOIN
阻止了对缺少任何类别账单的项目行的压制。