Sql 如何使用不同的where子句内部联接多个sum/group查询?
在下面的代码上使用Sql 如何使用不同的where子句内部联接多个sum/group查询?,sql,ms-access,Sql,Ms Access,在下面的代码上使用UNION,将产生两列: [运营商公司名称] 总和(总英亩) 对于每个[运营商公司名称],由于5个查询,共有5条记录(行) 我如何正确地编写一个联合或联接,其中5个查询的结果都在一个独立的列中,然后它们都在[运营商公司名称]上联接,以便新的查询输出为每列1条记录和6列(共同名称+5个查询结果) 实际结果应包括每列1条记录和列 [运营商公司名称]-其中所有查询都由 [总和(总英亩)] [总和(英亩数)] [总和(N英亩中)] [总和(英亩数)] [总和(半英亩)] 您应该能够使用
UNION
,将产生两列:
[运营商公司名称]
总和(总英亩)
[运营商公司名称]
,由于5个查询,共有5条记录(行)
我如何正确地编写一个联合
或联接
,其中5个查询的结果都在一个独立的列中,然后它们都在[运营商公司名称]
上联接,以便新的查询输出为每列1条记录和6列(共同名称+5个查询结果)
实际结果应包括每列1条记录和列
[运营商公司名称]
-其中所有查询都由[总和(总英亩)]
[总和(英亩数)]
[总和(N英亩中)]
[总和(英亩数)]
[总和(半英亩)]
您应该能够使用条件聚合来解决这个问题 诀窍在于在每个
SUM()
中使用IIF
语句,该语句保存来自相应原始子查询的条件。如果满足条件,则应在总和中考虑该值,否则应忽略该值
考虑:
SELECT
[Operator Company Name],
Sum([Area (Gross Acres)]) AS [Sum(Gross Acres)],
Sum(
IIF(
(
[COUNTY/PARISH] Like '*Reeves*'
OR [COUNTY/PARISH] Like '*Culberson*'
OR [COUNTY/PARISH] Like '*Pecos*'
OR [COUNTY/PARISH] Like '*Loving*'
OR [COUNTY/PARISH] Like '*Ward*'
OR [COUNTY/PARISH] Like '*Winkler*'
),
[Area (Gross Acres)],
0
)
) AS [Sum(TX DEL Acres)],
Sum(
IIF(
(
[COUNTY/PARISH] Like '*Dawson*'
OR [COUNTY/PARISH] Like '*Borden*'
OR [COUNTY/PARISH] Like '*Martin*'
OR [COUNTY/PARISH] Like '*Howard*'
),
[Area (Gross Acres)],
0
)
) AS [Sum(N MID Acres)],
Sum(
IIF(
(
[COUNTY/PARISH] Like '*Eddy*'
OR [COUNTY/PARISH] Like '*Lea*'
),
[Area (Gross Acres)],
0
)
) AS [Sum(NM DEL Acres)],
Sum(
IIF(
(
[COUNTY/PARISH] Like '*Midland*'
OR [COUNTY/PARISH] Like '*Glasscock*'
OR [COUNTY/PARISH] Like '*Upton*'
OR [COUNTY/PARISH] Like '*Reagan*'
),
[Area (Gross Acres)],
0
)
) AS [Sum(S MID Acres)]
FROM Enervus_PrivateData
WHERE [US Region] Like 'Permian'
GROUP BY [Operator Company Name];
SELECT
[Operator Company Name],
Sum([Area (Gross Acres)]) AS [Sum(Gross Acres)],
Sum(
IIF(
(
[COUNTY/PARISH] Like '*Reeves*'
OR [COUNTY/PARISH] Like '*Culberson*'
OR [COUNTY/PARISH] Like '*Pecos*'
OR [COUNTY/PARISH] Like '*Loving*'
OR [COUNTY/PARISH] Like '*Ward*'
OR [COUNTY/PARISH] Like '*Winkler*'
),
[Area (Gross Acres)],
0
)
) AS [Sum(TX DEL Acres)],
Sum(
IIF(
(
[COUNTY/PARISH] Like '*Dawson*'
OR [COUNTY/PARISH] Like '*Borden*'
OR [COUNTY/PARISH] Like '*Martin*'
OR [COUNTY/PARISH] Like '*Howard*'
),
[Area (Gross Acres)],
0
)
) AS [Sum(N MID Acres)],
Sum(
IIF(
(
[COUNTY/PARISH] Like '*Eddy*'
OR [COUNTY/PARISH] Like '*Lea*'
),
[Area (Gross Acres)],
0
)
) AS [Sum(NM DEL Acres)],
Sum(
IIF(
(
[COUNTY/PARISH] Like '*Midland*'
OR [COUNTY/PARISH] Like '*Glasscock*'
OR [COUNTY/PARISH] Like '*Upton*'
OR [COUNTY/PARISH] Like '*Reagan*'
),
[Area (Gross Acres)],
0
)
) AS [Sum(S MID Acres)]
FROM Enervus_PrivateData
WHERE [US Region] Like 'Permian'
GROUP BY [Operator Company Name];