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];