代码之家  ›  专栏  ›  技术社区  ›  Andy Evans

在SQL联合查询中添加列内容

  •  1
  • Andy Evans  · 技术社区  · 14 年前

    到目前为止我有这个问题

    SELECT
        COUNT(f.code_id) as item_count, 
        f.code_desc
    FROM 
        foo f
        INNER JOIN foohistory fh ON f.history_id = fh.history_id
    WHERE
        MONTH(fh.create_dt) = 6
        AND YEAR(fh.create_dr) = 2010
    GROUP BY 
        f.code_desc
    
        UNION ALL
    
    SELECT
        COUNT(b.code_id) as item_count, 
        b.code_desc
    FROM 
        bar b
        INNER JOIN barhistory bh ON b.history_id = bh.history_id
    WHERE
        MONTH(bh.create_dt) = 6
        AND YEAR(bh.create_dr) = 2010
    GROUP BY 
        b.code_desc
    

    我的目标是合并这两个查询,在每个代码描述前加上“项目计数”列的和。这是可能的吗?

    2 回复  |  直到 14 年前
        1
  •  5
  •   OMG Ponies    14 年前

    如果没有关于代码的更多信息,例如,如果两个表之间的代码可能相互排斥,请使用:

    SELECT x.code_desc,
           SUM(x.item_count)
     FROM (SELECT f.code_desc,
                  COUNT(f.code_id) as item_count
             FROM foo f
             JOIN foohistory fh ON f.history_id = fh.history_id
            WHERE MONTH(fh.create_dt) = 6
              AND YEAR(fh.create_dr) = 2010
         GROUP BY f.code_desc
           UNION ALL
           SELECT b.code_desc,
                  COUNT(b.code_id) as item_count    
             FROM bar b
             JOIN barhistory bh ON b.history_id = bh.history_id
            WHERE MONTH(bh.create_dt) = 6
              AND YEAR(bh.create_dr) = 2010
         GROUP BY b.code_desc) x
    GROUP BY x.code_desc
    
        2
  •  0
  •   brumScouse    14 年前

    是的,做这种事

    SELECT Sum(unionedTable.item_count)
    FROM 
    (
    //your query 
    
    
    ) as unionedTable