Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DB2中的联合查询_Db2_Union - Fatal编程技术网

DB2中的联合查询

DB2中的联合查询,db2,union,Db2,Union,我的问题是: SELECT BRAND,BRAND_GROUP, SUB_BRAND ,SUM(INCOME) AS TOTAL_INCOME FROM "tema".MMT WHERE BRAND_GROUP IS NULL AND SUB_BRAND IS NULL GROUP BY BRAND,BRAND_GROUP,SUB_BRAND UNION SELECT BRAND,BRAND_GROUP, SUB_BRAND ,SUM(INCOME) AS TOTAL_INCOME FROM

我的问题是:

SELECT BRAND,BRAND_GROUP, SUB_BRAND ,SUM(INCOME) AS TOTAL_INCOME FROM
"tema".MMT WHERE BRAND_GROUP IS NULL AND SUB_BRAND IS NULL GROUP BY
BRAND,BRAND_GROUP,SUB_BRAND

UNION
SELECT BRAND,BRAND_GROUP, SUB_BRAND ,SUM(INCOME) AS TOTAL_INCOME FROM
"tema".BGT WHERE BRAND_GROUP IS NULL AND SUB_BRAND IS NULL GROUP BY 
BRAND,BRAND_GROUP,SUB_BRAND;
我的输出是:

BRAND BRAND_GROUP SUB_BRAND TOTAL_INCOME 
----- ----------- --------- ------------ 
GBS   NULL        NULL             10000
SWG   NULL        NULL             10000
GBS   NULL        NULL             20000
STG   NULL        NULL             20000
GTS   NULL        NULL             30000
问题是我有两类品牌,我只想有一类。像这样:

Brand       Brand_Group     Sub_brand       Total_Income
GBS                  -          -           30000
STG                  -          -           20000
GTS                  -          -           30000
SWG                  -          -           10000

有人能帮我一个主意吗?

我想你想把你的
联合
查询下推到一个子查询中,然后对结果求和,如下所示

SELECT 
     BRAND
    ,BRAND_GROUP
    ,SUB_BRAND
    ,SUM(INCOME) AS TOTAL_INCOME
FROM (
    SELECT 
         BRAND
        ,BRAND_GROUP
        ,SUB_BRAND
        ,INCOME
    FROM "tema".MMT
    WHERE BRAND_GROUP IS NULL
      AND SUB_BRAND   IS NULL
    GROUP BY
         BRAND
        ,BRAND_GROUP
        ,SUB_BRAND

        UNION ALL

    SELECT
         BRAND
        ,BRAND_GROUP
        ,SUB_BRAND
        ,INCOME
    FROM "tema".BGT
    WHERE BRAND_GROUP IS NULL
      AND SUB_BRAND   IS NULL 
    GROUP BY 
         BRAND
        ,BRAND_GROUP
        ,SUB_BRAND
) tbl
GROUP BY 
     BRAND
    ,BRAND_GROUP
    ,SUB_BRAND
两点意见:

  • 我将您的查询更改为使用
    UNION ALL
    vs
    UNION
    ,因为
    UNION
    将消除重复项
  • 如果您只获取这些列的空行,是否需要选择
    品牌组
    子品牌
    ?对我来说似乎有些多余

我想您应该将您的
联合
查询向下推到一个子查询中,然后对其结果进行求和,如下所示

SELECT 
     BRAND
    ,BRAND_GROUP
    ,SUB_BRAND
    ,SUM(INCOME) AS TOTAL_INCOME
FROM (
    SELECT 
         BRAND
        ,BRAND_GROUP
        ,SUB_BRAND
        ,INCOME
    FROM "tema".MMT
    WHERE BRAND_GROUP IS NULL
      AND SUB_BRAND   IS NULL
    GROUP BY
         BRAND
        ,BRAND_GROUP
        ,SUB_BRAND

        UNION ALL

    SELECT
         BRAND
        ,BRAND_GROUP
        ,SUB_BRAND
        ,INCOME
    FROM "tema".BGT
    WHERE BRAND_GROUP IS NULL
      AND SUB_BRAND   IS NULL 
    GROUP BY 
         BRAND
        ,BRAND_GROUP
        ,SUB_BRAND
) tbl
GROUP BY 
     BRAND
    ,BRAND_GROUP
    ,SUB_BRAND
两点意见:

  • 我将您的查询更改为使用
    UNION ALL
    vs
    UNION
    ,因为
    UNION
    将消除重复项
  • 如果您只获取这些列的空行,是否需要选择
    品牌组
    子品牌
    ?对我来说似乎有些多余