qq_39372401 2017-12-08 07:03 采纳率: 75%
浏览 1225
已采纳

用sql server存储过程写一个报表,麻烦大神帮帮忙写个能用的,C币好说(实习任务!)

这是报表内容

这是我写的,新手见谅
图片说明
图片说明
图片说明

这是运行结果

这是一些参数

  • 写回答

2条回答 默认 最新

  • bbwolf 2017-12-10 07:39
    关注

    select ISNULL(T1.月份,T2.月份) as 月份,
    装配总数,合同金额,装配成本,装配利润,装配利润率,
    销售台数,开票金额,销售成本,销售利润,销售利润率
    FROM
    (
    select cast(YEAR(EXTEND50) as nvarchar(4)) + '-' + cast(MONTH(EXTEND50) as nvarchar(2)) as 月份,
    COUNT(sub_account_id) as 装配总数,
    SUM(discount_money) as 合同金额 ,
    SUM(EXTEND36) as 装配成本 ,
    SUM(discount_money) / 1.17 - SUM(EXTEND36) as 装配利润 ,
    (SUM(discount_money) / 1.17 - SUM(EXTEND36) ) / SUM(discount_money) as 装配利润率
    from T_CONTRACT_ORDER
    WHERE EXTEND1 = '装配工程单' AND EXTEND50 >= @KSRQ AND EXTEND50 <= @JSRQ
    Group By cast(YEAR(EXTEND50) as nvarchar(4)) + '-' + cast(MONTH(EXTEND50) as nvarchar(2))
    ) T1
    FULL OUTER JOIN
    (
    Select cast(YEAR(O.EXTEND50) as nvarchar(4)) + '-' + cast(MONTH(O.EXTEND50) as nvarchar(2)) as 月份,
    SUM(D.INVOICED_NUM) as 销售台数,
    SUM(O.INVOICED_MONEY) as 开票金额 ,
    SUM(O.EXTEND36) as 销售成本 ,
    SUM(O.INVOICED_MONEY) / 1.17 - SUM(O.EXTEND36) as 销售利润 ,
    (SUM(O.INVOICED_MONEY) / 1.17 - SUM(O.EXTEND36) ) / SUM(O.INVOICED_MONEY) as 销售利润率
    FROM T_CONTRACT_ORDER O INNER JOIN T_CONTRACT_ORDER_detail D ON O.sub_account_id = D.sub_account_id
    where O.EXTEND50 >= @KSRQ AND O.EXTEND50 <= @JSRQ and O.EXTEND1 = '工程销售'
    GROUP BY cast(YEAR(O.EXTEND50) as nvarchar(4)) + '-' + cast(MONTH(O.EXTEND50) as nvarchar(2))
    ) T2
    ON T1.月份 = T2.月份

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?