Столбец расчета с условием даты - PullRequest
0 голосов
/ 09 июля 2019

Я хочу рассчитать процентную единицу на основе столбцов.Формула представляет собой единицу продаж за 2018 год * сумма (продано за 2018 год)
единица продана за 2019 год * сумма (продано за 2019 год) за соответствующие годы.Это должно быть в одном столбце.

ВЫБЕРИТЕ DISTINCT (Item_No), country_consol как Страна, Posting_Date, NULLIF (sum (invoice_qty), 0) как Единицы, NULLIF (сумма (CYR_Net_Sales_USD_Amt), 0) как NetSales, NULLIF (sum_m_S_RUS)0) в виде COG, NULLIF (сумма (CYR_Net_Sales_USD_Amt), 0) - NULLIF (сумма (-CYR_COGS_USD_Amt), 0) в виде Gross_Profit, ((NULLIF (сумма (CYR_Net_Sales_USD_Amt), 0) -0 (0) - ноль долларов США)) / NULLIF (сумма (-CYR_Net_Sales_USD_Amt), 0)) * 100 в виде Gross_Margin, NULLIF (сумма (CYR_Net_Sales_USD_Amt), 0) / NULLIF (сумма (invoice_qty), 0) в виде PPU, NULLIF_счет_счет (сум) (мс)NULLIF (сумма (invoice_qty), 0) в качестве ЦП, (СЛУЧАЙ КОГДА Posting_Date> '2017-12-31' И Posting_Date <'2018-02-01' Then (SELECT (Invoice_Qty / (SELECT sum ([invoice_qty])) ОТ dbo.vw_GS_Cust_W_GL_Fact_Smry, где Posting_Date> '2017-12-31' И Posting_Date <'2018-02-01')) * 100) ELSE ((SELECT (Invoice_Qty / (SELECT sum ([invoice_qty])) FROM dbo.vw_GS_Cust_WD_Gry_WG>2018-01-31 'AND Posting_Date <' 2018-06-01 ')) * 100)) END) AS unitmix_perc ОТ dbo.vw_GS_Cust_W_GL_Fact_Smry, где country_consol в ('Великобритания') И Posting_Date> '2017-12-31' И Posting_Date <'2018-06-01' и Channel_Consol_Code не в ('Murad', 'Дочерние предприятия') и item_no в ('211249', «111266», «211063», «211273», «210683», «211282», «111262», «110621», «5597», «211257», «101104») GROUP BY Item_No, Posting_Date, [country_consol]</p>

ВЫБЕРИТЕ DISTINCT (Item_No), country_consol как Страна, Posting_Date, NULLIF (sum (invoice_qty), 0) как Единицы, NULLIF (сумма (CYR_Net_Sales_USD_Amt), 0) как NetSales, NULLIF (sum_m_S_RUS)0) в виде COG, NULLIF (сумма (CYR_Net_Sales_USD_Amt), 0) - NULLIF (сумма (-CYR_COGS_USD_Amt), 0) в виде Gross_Profit, ((NULLIF (сумма (CYR_Net_Sales_USD_Amt), 0) -0 (0) - ноль долларов США)) / NULLIF (сумма (-CYR_Net_Sales_USD_Amt), 0)) * 100 в виде Gross_Margin, NULLIF (сумма (CYR_Net_Sales_USD_Amt), 0) / NULLIF (сумма (invoice_qty), 0) в виде PPU, NULLIF_счет_счет (сум) (мс)NULLIF (сумма (invoice_qty), 0) как процессор, (СЛУЧАЙ, КОГДА Posting_Date> '2017-12-31' И Posting_Date <'2018-02-01' Then (SELECT (sum (Invoice_Q)ty) / (ВЫБЕРИТЕ сумму ([invoice_qty]) ОТ dbo.vw_GS_Cust_W_GL_Fact_Smry, где Posting_Date> '2017-12-31' И Posting_Date <'2018-02-01')) * 100) ELSE ((SELECT (sum (Invoice_Qty) /)(ВЫБЕРИТЕ сумму ([invoice_qty]) FROM dbo.vw_GS_Cust_W_GL_Fact_Smry, где Posting_Date> '2018-01-31' И Posting_Date <'2018-06-01')) * 100)) END) AS unitmix_perc FROM dbo.vw_GS_L___W_'United Kingdom') AND Posting_Date> '2017-12-31' AND Posting_Date <'2018-06-01' и Channel_Consol_Code не в ('Murad', 'дочерние компании') и item_no в ('A', 'B',«C», «D», «E», «F», «G», «H», «I», «J», «K») GROUP BY Item_No, Posting_Date, [country_consol] </p>

Ожидается:

Позиция_Но Дата Себестоимость товара Валовая прибыль Продано единиц GM ППУ ЦП 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 F 2018-02-01 1 722 74 1,796 104,30% 42 41 1,761904762 0,013565891 Н 2018-05-04 11,897 -856 11,042 92,80% 330 36,051515 -2,593939394 0,106589147 J 2018-02-03 5,337 -627 4,710 88,20 17,2 31.02906977 -3,645348837 0,055555579 B 2019 03073 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,4588337 048888337 0288885 782 130,70% 96 46,08333333 14,14583333 0,020855964

Фактические данные:

мои числа в единицах измерения perc неверны из-за нижеприведенного значения, поскольку я использую

sum (invoice_qty) вместо просто invoice_qty после этого:

(CASE WHEN Posting_Date> '2017-12-31 'И Posting_Date <' 2018-02-01 'Тогда (SELECT (sum (Invoice_Qty) / (SELECT sum ([invoice_qty])) FROM dbo.vw_GS_Cust_W_GL_Fact_Smry где Posting_Date>' 2017-12-31 'И Posting_Date <' 2018-02-01 ')) * 100) ELSE ((SELECT (sum (Invoice_Qty) / (SELECT sum ([invoice_qty])) FROM dbo.vw_GS_Cust_W_GL_Fact_Smry где Posting_Date>' 2018-01-31 'И Posting_Date <' 2018-06-01')) * 100)) END) AS unitmix_perc </p>

, если я использую только invoice_qty, это дает мне ошибку агрегации, и если я использую количество счетов в группе, оно снова дает неверный расчет для процента в процентах

(СЛУЧАЙ, КОГДА Posting_Date> '2017-12-31' И Posting_Date <'2018-02-01' Then (SELECT (Invoice_Qty / (SELECT sum ([invoice_qty])) ОТ dbo.vw_GS_Cust_W_GL_Fact_Smry где Posting_Date> '2017-12-31'AND Posting_Date <'2018-02-01')) * 100) ELSE ((SELECT (Invoice_Q)ty / (ВЫБЕРИТЕ сумму ([invoice_qty]) ОТ dbo.vw_GS_Cust_W_GL_Fact_Smry, где Posting_Date> '2018-01-31' И Posting_Date <'2018-06-01')) * 100)) END) AS unitmix_perc </p>

Позиция № Дата Продажи себестоимости товаров Валовая прибыль Продано единиц GM PPU CPU unit_perc A 2018-02-02 1 138 462 1 600 140,60% 755 1,50284768 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 F 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 5,97 201,618189 0,110 00002-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

...