计算列的日期条件

时间:2019-07-09 01:03:43

标签: mysql sql case calculation

我想基于列计算单位百分比。 公式是 2018年的单位销售*总和(2018年的已售单位)
2019年的总销量*总和(2019年的总销量)。这应该在单列中。

SELECT DISTINCT(Item_No),country_consol作为Country, 发布日期, NULLIF(sum(invoice_qty),0)作为单位, NULLIF(sum(CYR_Net_Sales_USD_Amt),0)作为NetSales, NULLIF(sum(-CYR_COGS_USD_Amt),0)作为COG, NULLIF(sum(CYR_Net_Sales_USD_Amt),0)-NULLIF(sum(-CYR_COGS_USD_Amt),0)作为Gross_Profit, ((NULLIF(sum(CYR_Net_Sales_USD_Amt),0)-NULLIF(sum(-CYR_COGS_USD_Amt),0))/ NULLIF(sum(-CYR_Net_Sales_USD_Amt),0))* 100 as Gross_Margin, NULLIF(sum(CYR_Net_Sales_USD_Amt),0)/ NULLIF(sum(invoice_qty),0)作为PPU, NULLIF(sum(CYR_Net_Sales_USD_Amt),0)/ NULLIF(sum(invoice_qty),0)作为CPU, (情况为Posting_Date>'2017-12-31'和Posting_Date <'2018-02-01'       然后(从dbo.vw_GS_Cust_W_GL_Fact_Smry中选择SELECT(Invoice_Qty /(SELECT sum([invoice_qty]))其中Posting_Date>'2017-12-31'AND Posting_Date <'2018-02-01'))* 100)       ELSE((SELECT(Invoice_Qty /(SELECT sum([invoice_qty])FROM dbo.vw_GS_Cust_W_GL_Fact_Smry where Posting_Date>'2018-01-31'AND Posting_Date <'2018-06-01'))* 100)))  END)AS unitmix_perc 来自dbo.vw_GS_Cust_W_GL_Fact_Smry 其中country_consol((英国))AND Posting_Date>'2017-12-31'AND Posting_Date <'2018-06-01' 和Channel_Consol_Code不在('Murad','Subsidiaries')和item_no在('211249','111266','211063','211273','210683','211282','111262','110621',' 5597','211257','101104') GROUP BY货号,邮寄日期,[country_consol]

SELECT DISTINCT(Item_No),country_consol作为Country, 发布日期, NULLIF(sum(invoice_qty),0)作为单位, NULLIF(sum(CYR_Net_Sales_USD_Amt),0)作为NetSales, NULLIF(sum(-CYR_COGS_USD_Amt),0)作为COG, NULLIF(sum(CYR_Net_Sales_USD_Amt),0)-NULLIF(sum(-CYR_COGS_USD_Amt),0)作为Gross_Profit, ((NULLIF(sum(CYR_Net_Sales_USD_Amt),0)-NULLIF(sum(-CYR_COGS_USD_Amt),0))/ NULLIF(sum(-CYR_Net_Sales_USD_Amt),0))* 100 as Gross_Margin, NULLIF(sum(CYR_Net_Sales_USD_Amt),0)/ NULLIF(sum(invoice_qty),0)作为PPU, NULLIF(sum(CYR_Net_Sales_USD_Amt),0)/ NULLIF(sum(invoice_qty),0)作为CPU, (情况为Posting_Date>'2017-12-31'和Posting_Date <'2018-02-01'       然后(从dbo.vw_GS_Cust_W_GL_Fact_Smry中选择SELECT(sum(Invoice_Qty)/(SELECT sum([invoice_qty])),其中Posting_Date>'2017-12-31'AND Posting_Date <'2018-02-01'))* 100)       ELSE((从dbo.vw_GS_Cust_W_GL_Fact_Smry中选择SELECT(sum(Invoice_Qty)/(SELECT sum([invoice_qty])),其中Posting_Date>'2018-01-31'AND Posting_Date <'2018-06-01'))* 100)))  END)AS unitmix_perc 来自dbo.vw_GS_Cust_W_GL_Fact_Smry 其中country_consol((英国))AND Posting_Date>'2017-12-31'AND Posting_Date <'2018-06-01' 和Channel_Consol_Code不在('Murad','Subsidiaries')和item_no in('A','B','C','D','E','F','G','H','我','J','K') GROUP BY货号,邮寄日期,[country_consol]

预期:

Item_No日期商品销售成本毛利销售的GM单位PPU CPU unit_perc A 2018-02-02 1,138 462 1,600 140.60%755 1.507284768 0.61192053 0.243863049 D 2018-01-01 12,793 -1,133 11,660 91.10%457 27.99343545 -2.479212254 0.147609819 E 2018-04-07 31,985 -1,151 30,834 96.40%1,340 23.86940299 -0.858955224 0.432816537 传真2018-02-01 1,722 74 1,796 104.30%42 41 1.761904762 0.013565891 H 2018-05-04 11,897 -856 11,042 92.80%330 36.05151515 -2.593939394 0.106589147 J 2018-02-03 5,337 -627 4,710 88.20%172 31.02906977 -3.645348837 0.055555556 B 2019-04-05 76,165 -3,079 73,086 96.00%3,527 21.59483981 -0.87297987 0.766239409 C 2019-04-01 12,500 -641 11,859 94.90%577 21.66377816 -1.110918544 0.125353031 G 2019-02-01 18,685 -1,003 17,683 94.60%403 46.36476427 -2.488833747 0.087551597 I 2019-02-02 4,424 1,358 5,782 130.70%96 46.08333333 14.14583333 0.020855964

实际:

我使用

时,由于以下原因,我在perc中的数字计算错误

sum(invoice_qty)而不是之后的invoice_qty:

(发布日期>'2017-12-31'和发布日期<'2018-02-01'的情况       然后(从dbo.vw_GS_Cust_W_GL_Fact_Smry中选择SELECT(sum(Invoice_Qty)/(SELECT sum([invoice_qty])),其中Posting_Date>'2017-12-31'AND Posting_Date <'2018-02-01'))* 100)       ELSE((从dbo.vw_GS_Cust_W_GL_Fact_Smry中选择SELECT(sum(Invoice_Qty)/(SELECT sum([invoice_qty])),其中Posting_Date>'2018-01-31'AND Posting_Date <'2018-06-01'))* 100)))  END)AS unitmix_perc

如果我仅使用invoice_qty,则会产生汇总错误;如果我按组使用发票数量,则会再次给出单位百分比的错误计算

(发布日期>'2017-12-31'和发布日期<'2018-02-01'的情况       然后(从dbo.vw_GS_Cust_W_GL_Fact_Smry中选择SELECT(Invoice_Qty /(SELECT sum([invoice_qty]))其中Posting_Date>'2017-12-31'AND Posting_Date <'2018-02-01'))* 100)       ELSE((SELECT(Invoice_Qty /(SELECT sum([invoice_qty])FROM dbo.vw_GS_Cust_W_GL_Fact_Smry where Posting_Date>'2018-01-31'AND Posting_Date <'2018-06-01'))* 100)))  END)AS unitmix_perc

Item_No日期商品销售成本毛利销售的GM单位PPU CPU unit_perc A 2018-02-02 1,138 462 1,600 140.60%755 1.507284768 0.61192053 0.0379 D 2018-01-01 12,793 -1,133 11,660 91.10%457 27.99343545 -2.479212254 0.0047 E 2018-04-07 31,985 -1,151 30,834 96.40%1,340 23.86940299 -0.858955224 0.0025 传真2018-02-01 1,722 74 1,796 104.30%42 41 1.761904762 0.0111 H 2018-05-04 11,897 -856 11,042 92.80%330 36.05151515 -2.593939394 -0.0001 J 2018-02-03 5,337 -627 4,710 88.20%172 31.02906977 -3.645348837 0.0017 B 2019-04-05 76,165 -3,079 73,086 96.00%3,527 21.59483981 -0.87297987 0.0008 C 2019-04-01 12,500 -641 11,859 94.90%577 21.66377816 -1.110918544 0.0004 G 2019-02-01 18,685 -1,003 17,683 94.60%403 46.36476427 -2.488833747 0.0001 I 2019-02-02 4,424 1,358 5,782 130.70%96 46.08333333 14.14583333 0.0044

0 个答案:

没有答案