avv210

Untitled

Jul 9th, 2024
596
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.29 KB | Help | 0 0
  1. -- File: Basic - 20230505.xlsx
  2. -- On Sheets: Omset3
  3. -- Task:
  4.     -- Keluarkan Toko di Wilayah:
  5.         -- 1 - DKI
  6.         -- 41 - BALI
  7.         -- Omset Bulan Okt2019
  8.  
  9. /*
  10. TABLE STRUCTURE:
  11.  
  12. ---------------------------------------------------------
  13. Divisi Produk | DEPO/CABANG/WILAYAH | LT | QTY SDA | Rp |
  14. ---------------------------------------------------------
  15. */
  16.  
  17. WITH cte_cust AS (
  18.     SELECT
  19.         customer_key,
  20.         inKdCabang,
  21.         chKetCabang,
  22.         inKdWilayah,
  23.         chKetWilayah,
  24.         inKdDepo,
  25.         chTipeDepo,
  26.         inKdDistinct
  27.     FROM
  28.         dba.lp_mcustomer
  29.     WHERE
  30.         inKdWilayah = 1
  31.     OR  inKdWilayah = 41
  32. ),
  33. cte_product AS (
  34.     SELECT
  35.         product_key,
  36.         inKdKelpDivisiNew,
  37.         chKetKelpDivisiNew,
  38.         inKdKonvSda
  39.     FROM
  40.         dba.lp_mproduct
  41. ),
  42. cte_product_and_cust AS (
  43.     SELECT
  44.     -- CUSTOMER
  45.         c.customer_key,
  46.         c.inKdCabang,
  47.         c.chKetCabang,
  48.         c.inKdWilayah,
  49.         c.chKetWilayah,
  50.         c.inKdDepo,
  51.         c.chTipeDepo,
  52.         c.inKdDistinct, -- LT
  53.     -- PRODUCT
  54.         p.product_key,
  55.         p.inKdKelpDivisiNew,
  56.         p.chKetKelpDivisiNew,
  57.         p.inKdKonvSda, -- QTY SDA
  58.  
  59.         t.deQtyNetto,
  60.         t.deRpNetto
  61.     FROM
  62.         dba.dm_tjual_mon t
  63.     LEFT JOIN
  64.         cte_cust c ON t.customer_key = c.customer_key
  65.     LEFT JOIN
  66.         cte_product p ON t.product_key = p.product_key
  67.     WHERE
  68.         t.inBulan = 10
  69.     AND
  70.         t.inTahun = 2019
  71. ),
  72. cte_depo AS (
  73.     SELECT
  74.         d.subq_kelp_divisi_depo AS 'kelp_divisi_depo',
  75.         d.subq_ket_depo AS 'ket_depo',
  76.         SUM(d.subq_lt_depo) AS 'lt_depo',
  77.         SUM(d.subq_qty_sda_depo) AS 'qty_sda_depo',
  78.         SUM(d.subq_rp_depo) AS 'rp_depo',
  79.         d.subq_helper_col_depo AS 'helper_col_depo'
  80.     FROM (
  81.         SELECT
  82.             CAST(pc.inKdKelpDivisiNew AS VARCHAR) + '-' + pc.chKetKelpDivisiNew AS 'subq_kelp_divisi_depo',
  83.             RIGHT('0' + CAST(pc.inKdCabang AS VARCHAR), 2) + RIGHT('0' + CAST(pc.inKdDepo AS VARCHAR), 2) + '-' + pc.chTipeDepo AS 'subq_ket_depo',
  84.             COUNT(DISTINCT pc.inKdDistinct) AS 'subq_lt_depo',
  85.             SUM(pc.deQtyNetto/pc.inKdKonvSda) AS 'subq_qty_sda_depo',
  86.             pc.deRpNetto AS 'subq_rp_depo',
  87.             CAST(pc.inKdKelpDivisiNew AS VARCHAR) + -- kelp divisi (1 char)
  88.             COALESCE(RIGHT('0' + CAST(pc.inKdWilayah AS VARCHAR), 2), 'zz') + -- wilayah (2 char)
  89.             COALESCE(RIGHT('0' + CAST(pc.inKdCabang AS VARCHAR), 2), 'zz') + -- cabang (2 char)
  90.             COALESCE(RIGHT('0' + CAST(pc.inKdCabang AS VARCHAR), 2), 'zz') + COALESCE(RIGHT('0' + CAST(pc.inKdDepo AS VARCHAR), 2), 'zz') -- kode depo (4 char: 2 char cabang + 2 char depo)
  91.             AS 'subq_helper_col_depo'
  92.         FROM
  93.             cte_product_and_cust pc
  94.         GROUP BY
  95.             pc.inKdWilayah,
  96.             pc.inKdCabang,
  97.             pc.inKdDepo,
  98.             pc.chTipeDepo,
  99.             pc.deRpNetto,
  100.             pc.inKdKelpDivisiNew,
  101.             pc.chKetKelpDivisiNew
  102.     ) d
  103.     GROUP BY
  104.         ket_depo,
  105.         kelp_divisi_depo,
  106.         helper_col_depo
  107. ),
  108. cte_area AS (
  109.     SELECT
  110.         a.subq_kelp_divisi_area AS 'kelp_divisi_area',
  111.         a.subq_ket_area AS 'ket_area',
  112.         SUM(a.subq_lt_area) AS 'lt_area',
  113.         SUM(a.subq_qty_sda_area) AS 'qty_sda_area',
  114.         SUM(a.subq_rp_area) AS 'rp_area',
  115.         a.subq_helper_col_area AS 'helper_col_area'
  116.     FROM (
  117.         SELECT
  118.             CAST(pc.inKdKelpDivisiNew AS VARCHAR) + '-' + pc.chKetKelpDivisiNew AS 'subq_kelp_divisi_area',
  119.             RIGHT('0' + CAST(pc.inKdCabang AS VARCHAR), 2) + '-AREA ' + pc.chKetCabang AS 'subq_ket_area',
  120.             COUNT(DISTINCT pc.inKdDistinct) AS 'subq_lt_area',
  121.             SUM(pc.deQtyNetto/pc.inKdKonvSda) AS 'subq_qty_sda_area',
  122.             pc.deRpNetto AS 'subq_rp_area',
  123.             CAST(pc.inKdKelpDivisiNew AS VARCHAR) + -- kelp divisi (1 char)
  124.             COALESCE(RIGHT('0' + CAST(pc.inKdWilayah AS VARCHAR), 2), 'zz') + -- wilayah (2 char)
  125.             COALESCE(RIGHT('0' + CAST(pc.inKdCabang AS VARCHAR), 2), 'zz') + -- cabang (2 char)
  126.             'zzzz' -- kode depo (4 char: 2 char cabang + 2 char depo)
  127.             AS 'subq_helper_col_area'
  128.         FROM
  129.             cte_product_and_cust pc
  130.         GROUP BY
  131.             pc.inKdWilayah,
  132.             pc.inKdCabang,
  133.             pc.chKetCabang,
  134.             pc.deRpNetto,
  135.             pc.inKdKelpDivisiNew,
  136.             pc.chKetKelpDivisinew
  137.     ) a
  138.     GROUP BY
  139.         ket_area,
  140.         kelp_divisi_area,
  141.         helper_col_area
  142. ),
  143. cte_wilayah AS (
  144.     SELECT
  145.         w.subq_kelp_divisi_wilayah AS 'kelp_divisi_wilayah',
  146.         w.subq_ket_wilayah AS 'ket_wilayah',
  147.         SUM(w.subq_lt_wilayah) AS 'lt_wilayah',
  148.         SUM(w.subq_qty_sda_wilayah) AS 'qty_sda_wilayah',
  149.         SUM(w.subq_rp_wilayah) AS 'rp_wilayah',
  150.         w.subq_helper_col_wilayah AS 'helper_col_wilayah'
  151.     FROM (
  152.         SELECT
  153.             CAST(pc.inKdKelpDivisiNew AS VARCHAR) + '-' + pc.chKetKelpDivisiNew AS 'subq_kelp_divisi_wilayah',
  154.             RIGHT('0' + CAST(pc.inKdWilayah AS VARCHAR), 2) + '-' + pc.chKetWilayah AS 'subq_ket_wilayah',
  155.             COUNT(DISTINCT pc.inKdDistinct) AS 'subq_lt_wilayah',
  156.             SUM(pc.deQtyNetto/pc.inKdKonvSda) AS 'subq_qty_sda_wilayah',
  157.             pc.deRpNetto AS 'subq_rp_wilayah',
  158.             CAST(pc.inKdKelpDivisiNew AS VARCHAR) + -- kelp divisi (1 char)
  159.             COALESCE(RIGHT('0' + CAST(pc.inKdWilayah AS VARCHAR), 2), 'zz') + -- wilayah (2 char)
  160.             'zz' + -- cabang (2 char)
  161.             'zzzz' -- kode depo (4 char: 2 char cabang + 2 char depo)
  162.             AS 'subq_helper_col_wilayah'
  163.         FROM
  164.             cte_product_and_cust pc
  165.         GROUP BY
  166.             pc.inKdKelpDivisiNew,
  167.             pc.inKdWilayah,
  168.             pc.chKetWilayah,
  169.             pc.deRpNetto,
  170.             pc.inKdKelpDivisiNew,
  171.             pc.chKetKelpDivisiNew
  172.     ) w
  173.     GROUP BY
  174.         ket_wilayah,
  175.         kelp_divisi_wilayah,
  176.         helper_col_wilayah
  177. ),
  178. cte_total AS (
  179.     SELECT
  180.         tot.subq_kelp_divisi_total AS 'kelp_divisi_total',
  181.         'TOTAL' AS 'total_col',
  182.         SUM(tot.subq_lt_total) AS 'lt_total',
  183.         SUM(tot.subq_qty_sda_total) AS 'qty_sda_total',
  184.         SUM(tot.subq_rp_total) AS 'rp_total',
  185.         tot.subq_helper_col_total AS 'helper_col_total'
  186.     FROM (
  187.         SELECT
  188.             CAST(pc.inKdKelpDivisiNew AS VARCHAR) + '-' + pc.chKetKelpDivisiNew AS 'subq_kelp_divisi_total',
  189.             COUNT(DISTINCT pc.inKdDistinct) AS 'subq_lt_total',
  190.             SUM(pc.deQtyNetto/pc.inKdKonvSda) AS 'subq_qty_sda_total',
  191.             pc.deRpNetto AS 'subq_rp_total',
  192.             CAST(pc.inKdKelpDivisiNew AS VARCHAR) + -- kelp divisi (1 char)
  193.             'zz' + -- wilayah (2 char)
  194.             'zz' + -- cabang (2 char)
  195.             'zzzz' -- kode depo (4 char: 2 char cabang + 2 char depo)
  196.             AS 'subq_helper_col_total'
  197.         FROM
  198.             cte_product_and_cust pc
  199.         GROUP BY
  200.             pc.inKdKelpDivisiNew,
  201.             pc.chKetKelpDivisiNew,
  202.             pc.deRpNetto
  203.     ) tot
  204.     GROUP BY
  205.         kelp_divisi_total,
  206.         helper_col_total
  207. ),
  208. cte_grand_total AS (
  209.     SELECT
  210.         '' AS '',
  211.         'GRAND TOTAL' AS 'grand_total',
  212.         SUM(tot.lt_total) AS 'grand_total_lt',
  213.         SUM(tot.qty_sda_total) AS 'grand_total_qty_sda',
  214.         SUM(tot.rp_total) AS 'grand_total_rp',
  215.         'z' + -- kelp divisi (1 char)
  216.         'zz' + -- wilayah (2 char)
  217.         'zz' + -- cabang (2 char)
  218.         'zzzz' -- kode depo (4 char: 2 char cabang + 2 char depo)
  219.         AS 'subq_helper_col_total'
  220.     FROM
  221.         cte_total tot
  222. )
  223. SELECT
  224.     kelp_divisi_depo AS 'Divisi Produk',
  225.     ket_depo AS 'DEPO/CABANG/WILAYAH',
  226.     COALESCE(lt_depo, 0) AS 'LT',
  227.     qty_sda_depo AS 'QTY SDA',
  228.     rp_depo AS 'Rp',
  229.     helper_col_depo AS 'helper_col'
  230. FROM
  231.     cte_depo
  232. UNION ALL
  233. SELECT
  234.     kelp_divisi_area,
  235.     ket_area,
  236.     lt_area,
  237.     qty_sda_area,
  238.     rp_area,
  239.     helper_col_area
  240. FROM
  241.     cte_area
  242. UNION ALL
  243. SELECT
  244.     kelp_divisi_wilayah,
  245.     ket_wilayah,
  246.     lt_wilayah,
  247.     qty_sda_wilayah,
  248.     rp_wilayah,
  249.     helper_col_wilayah
  250. FROM
  251.     cte_wilayah
  252. UNION ALL
  253. SELECT
  254.     *
  255. FROM
  256.     cte_total
  257. UNION ALL
  258. SELECT
  259.     *
  260. FROM
  261.     cte_grand_total
  262. ORDER BY
  263.     6
  264.  
Tags: sql sybase
Advertisement
Add Comment
Please, Sign In to add comment