Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
 - Small adjustment to sqls
  • Loading branch information
dragospodariu96 committed Nov 24, 2020
1 parent 59f3598 commit cf653d7
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ WITH PriceListVersionsByValidFrom AS
plv.m_pricelist_version_id,
plv.validfrom,
plv.name,
101 - (row_number() OVER (PARTITION BY plv.c_bpartner_id ORDER BY plv.validfrom ASC, plv.m_pricelist_version_id ASC)) rank
1001 - (row_number() OVER (PARTITION BY plv.c_bpartner_id ORDER BY plv.validfrom ASC, plv.m_pricelist_version_id ASC)) rank

FROM Report.Fresh_PriceList_Version_Val_Rule plv
WHERE TRUE
Expand All @@ -82,19 +82,19 @@ WITH PriceListVersionsByValidFrom AS
) t

WHERE t.rank = 1
OR t.rank = 100
OR t.rank = 1000
),
currentAndPreviousPLV AS
(
-- implementation detail: all these sub-selects would be better implemented with a pivot. Unfortunately i cant understand how pivots work.
SELECT DISTINCT --
plvv.c_bpartner_id,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV1_ID,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV2_ID,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV2_ID,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV1,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV2,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV2,
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV1,
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV2
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV2
FROM PriceListVersionsByValidFrom plvv
ORDER BY plvv.c_bpartner_id
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ WITH PriceListVersionsByValidFrom AS
plv.m_pricelist_version_id,
plv.validfrom,
plv.name,
101 - (row_number() OVER (PARTITION BY plv.c_bpartner_id ORDER BY plv.validfrom ASC, plv.m_pricelist_version_id ASC)) rank
1001 - (row_number() OVER (PARTITION BY plv.c_bpartner_id ORDER BY plv.validfrom ASC, plv.m_pricelist_version_id ASC)) rank

FROM Report.Fresh_PriceList_Version_Val_Rule plv
WHERE TRUE
Expand All @@ -82,19 +82,19 @@ WITH PriceListVersionsByValidFrom AS
) t

WHERE t.rank = 1
OR t.rank = 100
OR t.rank = 1000
),
currentAndPreviousPLV AS
(
-- implementation detail: all these sub-selects would be better implemented with a pivot. Unfortunately i cant understand how pivots work.
SELECT DISTINCT --
plvv.c_bpartner_id,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV1_ID,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV2_ID,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV2_ID,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV1,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV2,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV2,
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV1,
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV2
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV2
FROM PriceListVersionsByValidFrom plvv
ORDER BY plvv.c_bpartner_id
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ DROP FUNCTION IF EXISTS report.Current_Vs_Next_Pricelist_Comparison_Report(p_C_B
;

CREATE OR REPLACE FUNCTION report.Current_Vs_Next_Pricelist_Comparison_Report(p_C_BPartner_ID numeric = NULL,
p_C_BP_Group_ID numeric = NULL,
p_IsSoTrx text = 'Y',
p_AD_Language TEXT = 'en_US',
p_show_product_price_pi_flag text = 'Y')
p_C_BP_Group_ID numeric = NULL,
p_IsSoTrx text = 'Y',
p_AD_Language TEXT = 'en_US',
p_show_product_price_pi_flag text = 'Y')
RETURNS TABLE
(
bp_value text,
Expand Down Expand Up @@ -67,7 +67,7 @@ WITH PriceListVersionsByValidFrom AS
plv.m_pricelist_version_id,
plv.validfrom,
plv.name,
101 - (row_number() OVER (PARTITION BY plv.c_bpartner_id ORDER BY plv.validfrom ASC, plv.m_pricelist_version_id ASC)) rank
1001 - (row_number() OVER (PARTITION BY plv.c_bpartner_id ORDER BY plv.validfrom ASC, plv.m_pricelist_version_id ASC)) rank

FROM Report.Fresh_PriceList_Version_Val_Rule plv
WHERE TRUE
Expand All @@ -82,19 +82,19 @@ WITH PriceListVersionsByValidFrom AS
) t

WHERE t.rank = 1
OR t.rank = 100
OR t.rank = 1000
),
currentAndPreviousPLV AS
(
-- implementation detail: all these sub-selects would be better implemented with a pivot. Unfortunately i cant understand how pivots work.
SELECT DISTINCT --
plvv.c_bpartner_id,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV1_ID,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV2_ID,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV2_ID,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV1,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV2,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV2,
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV1,
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV2
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV2
FROM PriceListVersionsByValidFrom plvv
ORDER BY plvv.c_bpartner_id
),
Expand Down Expand Up @@ -266,7 +266,7 @@ WITH PriceListVersionsByValidFrom AS
plv.m_pricelist_version_id,
plv.validfrom,
plv.name,
101 - (row_number() OVER (PARTITION BY plv.c_bpartner_id ORDER BY plv.validfrom ASC, plv.m_pricelist_version_id ASC)) rank
1001 - (row_number() OVER (PARTITION BY plv.c_bpartner_id ORDER BY plv.validfrom ASC, plv.m_pricelist_version_id ASC)) rank

FROM Report.Fresh_PriceList_Version_Val_Rule plv
WHERE TRUE
Expand All @@ -281,19 +281,19 @@ WITH PriceListVersionsByValidFrom AS
) t

WHERE t.rank = 1
OR t.rank = 100
OR t.rank = 1000
),
currentAndPreviousPLV AS
(
-- implementation detail: all these sub-selects would be better implemented with a pivot. Unfortunately i cant understand how pivots work.
SELECT DISTINCT --
plvv.c_bpartner_id,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV1_ID,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV2_ID,
(SELECT plvv2.m_pricelist_version_id FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) PLV2_ID,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV1,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV2,
(SELECT plvv2.validfrom FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) validFromPLV2,
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV1,
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 100 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV2
(SELECT plvv2.name FROM PriceListVersionsByValidFrom plvv2 WHERE plvv2.rank = 1000 AND plvv2.c_bpartner_id = plvv.c_bpartner_id) namePLV2
FROM PriceListVersionsByValidFrom plvv
ORDER BY plvv.c_bpartner_id
),
Expand Down

0 comments on commit cf653d7

Please sign in to comment.