查2004年4月:SELECT A.企业性质,A.进出口本期 AS 进出口本期,B.进出口本期 AS 进出口去年同期,(A.进出口本期-B.进出口本期)/B.进出口本期 AS 同比,A.进口本期,B.进口本期 AS 进口去年同期,(A.进口本期-B.进口本期)/B.进口本期 AS 同比,A.出口本期,B.出口本期 AS 出口去年同期,(A.出口本期-B.出口本期)/B.出口本期 AS 同比 
FROM (SELECT 企业性质,SUM(数量) AS 进出口本期,SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期 FROM 数据表 WHERE 年=2004 AND 月=4 GROUP BY 企业性质
UNION ALL
SELECT '合计' AS 企业性质,SUM(数量) AS 进出口本期,SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期 FROM 数据表 WHERE 年=2004 AND 月=4
) AS A,
(SELECT 企业性质,SUM(数量) AS 进出口本期,SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期 FROM 数据表 WHERE 年=2004-1 AND 月=4 GROUP BY 企业性质
UNION ALL
SELECT '合计' AS 企业性质,SUM(数量) AS 进出口本期,SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期 FROM 数据表 WHERE 年=2004-1 AND 月=4
) AS B
WHERE A.企业性质=B.企业性质

解决方案 »

  1.   

    整理一下:查2004年4月:SELECT A.企业性质,A.进出口本期 AS 进出口本期,B.进出口本期 AS 进出口去年同期,
    (A.进出口本期-B.进出口本期)/B.进出口本期 AS 同比,
    A.进口本期,B.进口本期 AS 进口去年同期,
    (A.进口本期-B.进口本期)/B.进口本期 AS 同比,
    A.出口本期,B.出口本期 AS 出口去年同期,
    (A.出口本期-B.出口本期)/B.出口本期 AS 同比 
    FROM (
      SELECT 企业性质,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期 
      FROM 数据表 WHERE 年=2004 AND 月=4 GROUP BY 企业性质
      UNION ALL
      SELECT '合计' AS 企业性质,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期 
      FROM 数据表 WHERE 年=2004 AND 月=4
    ) AS A,
    (
      SELECT 企业性质,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期 
      FROM 数据表 WHERE 年=2004-1 AND 月=4 GROUP BY 企业性质
      UNION ALL
      SELECT '合计' AS 企业性质,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期 
      FROM 数据表 WHERE 年=2004-1 AND 月=4
    ) AS B
    WHERE A.企业性质=B.企业性质
      

  2.   

    --也来写一个,假设你是按月查询,那本期自然是指查询的当前年月declare @year int,@month int
    select @year=2004,@month=3 --定义要查询的年月--查询
    select 企业性质=isnull(a.企业性质,b.企业性质)
    ,进出口本期=isnull(a.进出口本期,0)
    ,进出口去年同期=isnull(b.进出口本期,0)
    ,进出口同比=cast(cast(isnull(a.进出口本期,0)*100.0
    /isnull(b.进出口本期,0) as decimal(20,2)) as varchar)+'%'
    ,进口本期=isnull(a.进口本期,0)
    ,进口去年同期=isnull(b.进口本期,0)
    ,进口同比=cast(cast(isnull(a.进口本期,0)*100.0
    /isnull(b.进口本期,0) as decimal(20,2)) as varchar)+'%'
    ,出口本期=isnull(a.出口本期,0)
    ,出口去年同期=isnull(b.出口本期,0)
    ,出口同比=cast(cast(isnull(a.出口本期,0)*100.0
    /isnull(b.出口本期,0) as decimal(20,2)) as varchar)+'%'
    from(
    select 企业性质=case grouping(企业性质) when 0 then 企业性质 else '合计' end
    ,进出口本期=sum(数量)
    ,进口本期=sum(case 进出口标记 when '进口' then 数量 else 0 end)
    ,出口本期=sum(case 进出口标记 when '出口' then 数量 else 0 end)
    ,s1=grouping(企业性质) --排序用,因为你的示例结果要求合计排序在前面
    from 表
    where 年=@year and 月=@month
    group by 企业性质 with rollup
    )a full join(
    select 企业性质=case grouping(企业性质) when 0 then 企业性质 else '合计' end
    ,进出口本期=sum(数量)
    ,进口本期=sum(case 进出口标记 when '进口' then 数量 else 0 end)
    ,出口本期=sum(case 进出口标记 when '出口' then 数量 else 0 end)
    ,s1=grouping(企业性质)
    from 表
    where 年=@year-1 and 月=@month
    group by 企业性质 with rollup
    )b on a.企业性质=b.企业性质
    order by isnull(a.s1,b.s1) desc,isnull(a.企业性质,b.企业性质)
      

  3.   

    --合并一下应该就行了.--定义查询的参数
    declare @year int,@month int
    select @year=2004,@month=3 --定义要查询的年月select 标题
    ,进出口本期,进出口去年同期,进出口同比
    ,进口本期,进口去年同期,进口同比
    ,出口本期,出口去年同期,出口同比
    from(--总的合计数
    select 标题=isnull(a.标题,b.标题)
    ,进出口本期=isnull(a.进出口本期,0)
    ,进出口去年同期=isnull(b.进出口本期,0)
    ,进出口同比=cast(cast(isnull(a.进出口本期,0)*100.0
    /isnull(b.进出口本期,0) as decimal(20,2)) as varchar)+'%'
    ,进口本期=isnull(a.进口本期,0)
    ,进口去年同期=isnull(b.进口本期,0)
    ,进口同比=cast(cast(isnull(a.进口本期,0)*100.0
    /isnull(b.进口本期,0) as decimal(20,2)) as varchar)+'%'
    ,出口本期=isnull(a.出口本期,0)
    ,出口去年同期=isnull(b.出口本期,0)
    ,出口同比=cast(cast(isnull(a.出口本期,0)*100.0
    /isnull(b.出口本期,0) as decimal(20,2)) as varchar)+'%'
    ,s1=4
    from(
    select 标题='合计'
    ,进出口本期=sum(数量)
    ,进口本期=sum(case 进出口标记 when '进口' then 数量 else 0 end)
    ,出口本期=sum(case 进出口标记 when '出口' then 数量 else 0 end)
    from 表
    where 年=@year and 月=@month
    )a full join(
    select 标题='合计'
    ,进出口本期=sum(数量)
    ,进口本期=sum(case 进出口标记 when '进口' then 数量 else 0 end)
    ,出口本期=sum(case 进出口标记 when '出口' then 数量 else 0 end)
    from 表
    where 年=@year-1 and 月=@month
    )b on a.标题=b.标题union all --企业性质部分的统计
    select 标题=isnull(a.企业性质,b.企业性质)
    ,进出口本期=isnull(a.进出口本期,0)
    ,进出口去年同期=isnull(b.进出口本期,0)
    ,进出口同比=cast(cast(isnull(a.进出口本期,0)*100.0
    /isnull(b.进出口本期,0) as decimal(20,2)) as varchar)+'%'
    ,进口本期=isnull(a.进口本期,0)
    ,进口去年同期=isnull(b.进口本期,0)
    ,进口同比=cast(cast(isnull(a.进口本期,0)*100.0
    /isnull(b.进口本期,0) as decimal(20,2)) as varchar)+'%'
    ,出口本期=isnull(a.出口本期,0)
    ,出口去年同期=isnull(b.出口本期,0)
    ,出口同比=cast(cast(isnull(a.出口本期,0)*100.0
    /isnull(b.出口本期,0) as decimal(20,2)) as varchar)+'%'
    ,s1=isnull(a.s1,b.s1)
    from(
    select 企业性质=case grouping(企业性质) when 0 then 企业性质 
    else '按企业性质分类' end
    ,进出口本期=sum(数量)
    ,进口本期=sum(case 进出口标记 when '进口' then 数量 else 0 end)
    ,出口本期=sum(case 进出口标记 when '出口' then 数量 else 0 end)
    ,s1=grouping(企业性质) --排序用,因为你的示例结果要求合计排序在前面
    from 表
    where 年=@year and 月=@month
    group by 企业性质 with rollup
    )a full join(
    select 企业性质=case grouping(企业性质) when 0 then 企业性质 
    else '按企业性质分类' end
    ,进出口本期=sum(数量)
    ,进口本期=sum(case 进出口标记 when '进口' then 数量 else 0 end)
    ,出口本期=sum(case 进出口标记 when '出口' then 数量 else 0 end)
    ,s1=grouping(企业性质)+2
    from 表
    where 年=@year-1 and 月=@month
    group by 企业性质 with rollup
    )b on a.企业性质=b.企业性质union all  --商品类别部分的统计
    select 标题=isnull(a.商品类别,b.商品类别)
    ,进出口本期=isnull(a.进出口本期,0)
    ,进出口去年同期=isnull(b.进出口本期,0)
    ,进出口同比=cast(cast(isnull(a.进出口本期,0)*100.0
    /isnull(b.进出口本期,0) as decimal(20,2)) as varchar)+'%'
    ,进口本期=isnull(a.进口本期,0)
    ,进口去年同期=isnull(b.进口本期,0)
    ,进口同比=cast(cast(isnull(a.进口本期,0)*100.0
    /isnull(b.进口本期,0) as decimal(20,2)) as varchar)+'%'
    ,出口本期=isnull(a.出口本期,0)
    ,出口去年同期=isnull(b.出口本期,0)
    ,出口同比=cast(cast(isnull(a.出口本期,0)*100.0
    /isnull(b.出口本期,0) as decimal(20,2)) as varchar)+'%'
    ,s1=isnull(a.s1,b.s1)
    from(
    select 企业性质=case grouping(商品类别) when 0 then 商品类别 
    else '按商品类别分类' end
    ,进出口本期=sum(数量)
    ,进口本期=sum(case 进出口标记 when '进口' then 数量 else 0 end)
    ,出口本期=sum(case 进出口标记 when '出口' then 数量 else 0 end)
    ,s1=grouping(商品类别)
    from 表
    where 年=@year and 月=@month
    group by 商品类别 with rollup
    )a full join(
    select 企业性质=case grouping(商品类别) when 0 then 商品类别 
    else '按商品类别分类' end
    ,进出口本期=sum(数量)
    ,进口本期=sum(case 进出口标记 when '进口' then 数量 else 0 end)
    ,出口本期=sum(case 进出口标记 when '出口' then 数量 else 0 end)
    ,s1=grouping(商品类别)
    from 表
    where 年=@year-1 and 月=@month
    group by 商品类别 with rollup
    )b on a.商品类别=b.商品类别)a order by s1 desc,标题
      

  4.   

    我上面已经写啦,就是类似这样的语句中case grouping(商品类别) when 0 then 商品类别 
    else '按商品类别分类' end
    ,进出口本期=sum(数量)
      

  5.   

    create table #tmp(...)
    往里插值呵,参考一下 邹建 大哥的程序啊。
    最后,
    if (object_id('tempdb..#tmp) is not null)
      Drop Table #tmp
      

  6.   

    改变要求也不必临时表:查2004年4月:SELECT A.标题,A.进出口本期 AS 进出口本期,B.进出口本期 AS 进出口去年同期,
    (A.进出口本期-B.进出口本期)/B.进出口本期 AS 同比,
    A.进口本期,B.进口本期 AS 进口去年同期,
    (A.进口本期-B.进口本期)/B.进口本期 AS 同比,
    A.出口本期,B.出口本期 AS 出口去年同期,
    (A.出口本期-B.出口本期)/B.出口本期 AS 同比 
    FROM (
      SELECT 企业性质 as 标题,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         2 as type 
      FROM 数据表 WHERE 年=2004 AND 月=4 GROUP BY 企业性质
      UNION ALL
      SELECT 商品类别 as 标题,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         3 as type 
      FROM 数据表 WHERE 年=2004 AND 月=4 GROUP BY 商品类别
      UNION ALL
      SELECT '合计' AS 标题,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         1 as type 
      FROM 数据表 WHERE 年=2004 AND 月=4
    ) AS A,
    (
      SELECT 企业性质 AS 标题,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         2 as type 
      FROM 数据表 WHERE 年=2004-1 AND 月=4 GROUP BY 企业性质
      UNION ALL
      SELECT 商品类别 AS 标题,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         3 as type 
      FROM 数据表 WHERE 年=2004-1 AND 月=4 GROUP BY 商品类别
      UNION ALL
      SELECT '合计' AS 标题,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         1 as type 
      FROM 数据表 WHERE 年=2004-1 AND 月=4
    ) AS B
    WHERE A.标题=B.标题 and a.type=b.type
    order by a.type,A.标题
      

  7.   

    还没理解什么叫同比
    还有个问题的万一没有上年的数据SELECT A.标题,A.进出口本期 AS 进出口本期,B.进出口本期 AS 进出口去年同期,
    case when isnull(B.进出口本期,0)=0 then 0 else cast(A.进出口本期 as numeric(18,2))/B.进出口本期 end AS 同比,    --百分比的格式自己改好不好?其他同比也自己改
    A.进口本期,B.进口本期 AS 进口去年同期,
    (A.进口本期-B.进口本期)/B.进口本期 AS 同比,
    A.出口本期,B.出口本期 AS 出口去年同期,
    (A.出口本期-B.出口本期)/B.出口本期 AS 同比 
    FROM (
      SELECT 企业性质 as 标题,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         2 as type 
      FROM 数据表 WHERE 年=2004 AND 月=4 GROUP BY 企业性质
      UNION ALL
      SELECT 商品类别 as 标题,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         3 as type 
      FROM 数据表 WHERE 年=2004 AND 月=4 GROUP BY 商品类别
      UNION ALL
      SELECT '合计' AS 标题,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         1 as type 
      FROM 数据表 WHERE 年=2004 AND 月=4
    ) AS A left join
    (
      SELECT 企业性质 AS 标题,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         2 as type 
      FROM 数据表 WHERE 年=2004-1 AND 月=4 GROUP BY 企业性质
      UNION ALL
      SELECT 商品类别 AS 标题,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         3 as type 
      FROM 数据表 WHERE 年=2004-1 AND 月=4 GROUP BY 商品类别
      UNION ALL
      SELECT '合计' AS 标题,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         1 as type 
      FROM 数据表 WHERE 年=2004-1 AND 月=4
    ) AS B
    on A.标题=B.标题 and a.type=b.type
    order by a.type,A.标题
      

  8.   

    不好意思,客户需求在不断变化中,报表要求有所变化,商品类别有较大变化
    数据表结构如下:ID       企业性质   商品类别   进出口标记     数量     年    月 
    其中 企业性质有下列分类:
    国有、三资
    进出口标记有下列分类:
    进口、出口商品类别有下列分类: 5001 适于缫丝的蚕茧 千克
    5002 生丝(未加捻) 千克
    5003 废丝(包括不宜缫丝的茧、废纱及回收纤维) 千克
    5004 丝纱线(绢纺纱线除外),非供零售用 千克
    5005 绢纺纱线,非供零售用 千克
    5006 丝纱线及绢纺纱线,供零售用;蚕胶丝 千克
    .....
             .....
             5999    绢纺纱线,非供零售用 千克
    都是纺织类
    8401 核反应堆及其未辐照燃料元件;同位素分离机 千克
    8402 蒸汽锅炉;过热水锅炉 —
    8403 集中供暖用的热水锅炉,但8402的货品除外 —
    8404 8402或8403所列锅炉的辅助设备 千克
    8405 煤气发生器;乙炔发生器等水解气体发生器 千克
    8406 汽轮机 —
    8407 点燃往复式或旋转式活塞内燃机 台/千瓦
    ......
             ......

    8423 衡器(感量≤50mg的天平除外),砝码、秤砣 —
    8424 液体或粉末喷射、散布等机械器具;灭火器等 —
    8425 滑车及提升机;卷扬机及绞盘;千斤顶 台
    8426 起重机等;移动式吊运架、跨运车等 台
    都是机械类 
    要求形成的报表如下:        进出口本期    进出口去年同期  同比   进口本期    进口去年同期  同比  出口本期   出口去年同期  同比 合计
    按企业性质分类
    国有
    三资
    按商品类别分类
    纺织
    机械
    帮忙呀!!
      

  9.   

    zicxc(冒牌邹建 V0.1), zjcxc(邹建)  快来帮忙呀!!!
      

  10.   

    先抛砖吧:SELECT A.标题,A.进出口本期 AS 进出口本期,B.进出口本期 AS 进出口去年同期,
    case when isnull(B.进出口本期,0)=0 then 0 else cast(A.进出口本期 as numeric(18,2))/B.进出口本期 end AS 同比,    --百分比的格式自己改好不好?其他同比也自己改
    A.进口本期,B.进口本期 AS 进口去年同期,
    (A.进口本期-B.进口本期)/B.进口本期 AS 同比,
    A.出口本期,B.出口本期 AS 出口去年同期,
    (A.出口本期-B.出口本期)/B.出口本期 AS 同比 
    FROM (
      SELECT 企业性质 as 标题,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         3 as type 
      FROM 数据表 WHERE 年=2004 AND 月=4 GROUP BY 企业性质
      UNION ALL
      SELECT '按企业性质分类' as 标题,null 进出口本期,
         null AS 进口本期,
         null AS 出口本期,
         2 as type 
      UNION ALL
      SELECT '按商品类别分类' as 标题,null 进出口本期,
         null AS 进口本期,
         null AS 出口本期,
         4 as type 
      UNION ALL
      SELECT case when 商品类别 between 5001 and 5999 then '纺织' 
            when 商品类别 between 5401 and 5499 then '机械' 
            end as 标题,
         SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         5 as type 
      FROM 数据表 WHERE 年=2004 AND 月=4 
      GROUP BY case when 商品类别 between 5001 and 5999 then '纺织' 
            when 商品类别 between 5401 and 5499 then '机械' 
            end
      UNION ALL
      SELECT '合计' AS 标题,SUM(数量) AS 进出口本期,
         SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
         SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         1 as type 
      FROM 数据表 WHERE 年=2004 AND 月=4
    ) AS A left join
    (
      SELECT 企业性质 AS 标题,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         3 as type 
      FROM 数据表 WHERE 年=2004-1 AND 月=4 GROUP BY 企业性质
      UNION ALL
      SELECT case when 商品类别 between 5001 and 5999 then '纺织' 
            when 商品类别 between 5401 and 5499 then '机械' 
            end AS 标题,
        SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         5 as type 
      FROM 数据表 WHERE 年=2004-1 AND 月=4 
      GROUP BY case when 商品类别 between 5001 and 5999 then '纺织' 
            when 商品类别 between 5401 and 5499 then '机械' 
            end
      UNION ALL
      SELECT '合计' AS 标题,SUM(数量) AS 进出口本期,
        SUM(CASE WHEN 进出口标记='进口' THEN 数量 ELSE 0 END) AS 进口本期,
        SUM(CASE WHEN 进出口标记='出口' THEN 数量 ELSE 0 END) AS 出口本期,
         1 as type 
      FROM 数据表 WHERE 年=2004-1 AND 月=4
    ) AS B
    on A.标题=B.标题 and a.type=b.type
    order by a.type,A.标题