将两个查询合并为一个
Combine Two Queries To One
在 Access 中 - 我想显示一个查询,为用户提供这两个查询的结果,因此查询结果是
州、CountOfSP、CountOfUsers
目前要获取信息,我们 运行 两个单独的查询
Select State, Count(userID) As CountOfUsers
From SalesData
Group By State
Order By State;
那么我们的第二个查询是
Select [%$##_Alias].State, Count(salesPerson) As CountOfSalesPerson
From
(
Select distinct salesPerson, State
From salesData
) AS [%$##@_Alias]
Group By [%$##@_Alias].State
在访问 sql 中是否有一种方法可以组合这两个查询,以便我可以从一个查询中获取我需要的所有数据?
编辑
我试过这种语法,但它给了我很大的膨胀数字和 CountOfUsers 和 CountOfSalesPerson
完全相同的计数
SELECT salesData.State, Count(salesData.userID) AS CountOfUsers, C
ount(Regioninfo.salesPerson) AS CountOfSalesPerson
FROM salesData
LEFT JOIN
(
Select distinct salesPerson, State
From salesData
group by Region, salesPerson
) AS Regioninfo ON salesData.State = Regioninfo.State
GROUP BY salesData.State
ORDER BY salesData.State;
你可以这样加入他们:
Select State, Count(userID) As CountOfUsers, Count(stateinfo.salesPerson) As CountOfSalesPerson
From SalesData
left join (
Select salesPerson, State
From salesData
group by salesperson, state
) AS stateinfo on salesdata.state = stateinfo.state
Group By Region
Order By Region;
另一种方式:
Select State, Count(userID) As CountOfUsers, stateinfo.c As CountOfSalesPerson
From SalesData
left join (
select count(z) as c, state
from (
Select distinct salesPerson as z, State
From salesData
) as x
group by state
) AS stateinfo on salesdata.state = stateinfo.state
Group By Region, stateinfo.c
Order By Region;
;with t as
(
Select [%$##_Alias].State, Count(salesPerson) As CountOfSalesPerson
From
(
Select distinct salesPerson, State
From salesData
) AS [%$##@_Alias]
Group By [%$##@_Alias].State
)
Select State, Count(userID) As CountOfUsers, t.CountOfSalesPerson
From SalesData s
left join t on t.state = s.state
Group By Region
Order By Region;
您可以使用两个聚合级别:
select State, sum(cnt) as CountOfUsers, count(*) as CountOfSalesPerson
from (Select State, salesPerson, Count(*) As cnt
From SalesData
Group By State
) as s
group by State
order by State;
在 Access 中 - 我想显示一个查询,为用户提供这两个查询的结果,因此查询结果是 州、CountOfSP、CountOfUsers
目前要获取信息,我们 运行 两个单独的查询
Select State, Count(userID) As CountOfUsers
From SalesData
Group By State
Order By State;
那么我们的第二个查询是
Select [%$##_Alias].State, Count(salesPerson) As CountOfSalesPerson
From
(
Select distinct salesPerson, State
From salesData
) AS [%$##@_Alias]
Group By [%$##@_Alias].State
在访问 sql 中是否有一种方法可以组合这两个查询,以便我可以从一个查询中获取我需要的所有数据?
编辑
我试过这种语法,但它给了我很大的膨胀数字和 CountOfUsers 和 CountOfSalesPerson
SELECT salesData.State, Count(salesData.userID) AS CountOfUsers, C
ount(Regioninfo.salesPerson) AS CountOfSalesPerson
FROM salesData
LEFT JOIN
(
Select distinct salesPerson, State
From salesData
group by Region, salesPerson
) AS Regioninfo ON salesData.State = Regioninfo.State
GROUP BY salesData.State
ORDER BY salesData.State;
你可以这样加入他们:
Select State, Count(userID) As CountOfUsers, Count(stateinfo.salesPerson) As CountOfSalesPerson
From SalesData
left join (
Select salesPerson, State
From salesData
group by salesperson, state
) AS stateinfo on salesdata.state = stateinfo.state
Group By Region
Order By Region;
另一种方式:
Select State, Count(userID) As CountOfUsers, stateinfo.c As CountOfSalesPerson
From SalesData
left join (
select count(z) as c, state
from (
Select distinct salesPerson as z, State
From salesData
) as x
group by state
) AS stateinfo on salesdata.state = stateinfo.state
Group By Region, stateinfo.c
Order By Region;
;with t as
(
Select [%$##_Alias].State, Count(salesPerson) As CountOfSalesPerson
From
(
Select distinct salesPerson, State
From salesData
) AS [%$##@_Alias]
Group By [%$##@_Alias].State
)
Select State, Count(userID) As CountOfUsers, t.CountOfSalesPerson
From SalesData s
left join t on t.state = s.state
Group By Region
Order By Region;
您可以使用两个聚合级别:
select State, sum(cnt) as CountOfUsers, count(*) as CountOfSalesPerson
from (Select State, salesPerson, Count(*) As cnt
From SalesData
Group By State
) as s
group by State
order by State;