CREATE TABLE OP_FCT_SDDB_VPA_POSITION(
FVPO_VPA_ID VARCHAR(12) NOT NULL
,DSAI_ID INTEGER NOT NULL
,FVPO_price_product_id VARCHAR(12) NOT NULL
,FVPO_material_number VARCHAR(12) NOT NULL
,FVPO_Quantity INTEGER
);
INSERT INTO OP_FCT_SDDB_VPA_POSITION(FVPO_VPA_ID,DSAI_ID,FVPO_price_product_id,FVPO_material_number,FVPO_Quantity) VALUES ('17270',40106,'PR000349059','SP000748370',5565604);
INSERT INTO OP_FCT_SDDB_VPA_POSITION(FVPO_VPA_ID,DSAI_ID,FVPO_price_product_id,FVPO_material_number,FVPO_Quantity) VALUES ('17270',40109,'PR000349059','SP000748364',1962898);
INSERT INTO OP_FCT_SDDB_VPA_POSITION(FVPO_VPA_ID,DSAI_ID,FVPO_price_product_id,FVPO_material_number,FVPO_Quantity) VALUES ('17270',40108,'PR000349059','SP000748366',2589732);
GO
3 rows affected
select FVPO_VPA_ID , FVPO_price_product_id , FVPO_material_number
, sum(FVPO_Quantity) as FVPO_Quantity
from OP_FCT_SDDB_VPA_POSITION
where FVPO_price_product_id = 'PR000349059'
and FVPO_VPA_ID = '17270'
group by FVPO_VPA_ID, FVPO_price_product_id, FVPO_material_number
GO
FVPO_VPA_ID | FVPO_price_product_id | FVPO_material_number | FVPO_Quantity
:---------- | :-------------------- | :------------------- | ------------:
17270 | PR000349059 | SP000748364 | 1962898
17270 | PR000349059 | SP000748366 | 2589732
17270 | PR000349059 | SP000748370 | 5565604
CREATE TABLE OP_DIM_SALES_ITEM(
DSAI_ID INTEGER NOT NULL PRIMARY KEY
,DSAI_PRPR_SAP_MATNR VARCHAR(12) NOT NULL
,DSAI_SP_SAP_MATNR VARCHAR(12) NOT NULL
,dsai_subito_transfer_flag VARCHAR(4) NOT NULL
);
INSERT INTO OP_DIM_SALES_ITEM(DSAI_ID,DSAI_PRPR_SAP_MATNR,DSAI_SP_SAP_MATNR,dsai_subito_transfer_flag) VALUES (40106,'PR000349059','SP000748370','Y');
INSERT INTO OP_DIM_SALES_ITEM(DSAI_ID,DSAI_PRPR_SAP_MATNR,DSAI_SP_SAP_MATNR,dsai_subito_transfer_flag) VALUES (40109,'PR000349059','SP000748364','Y');
INSERT INTO OP_DIM_SALES_ITEM(DSAI_ID,DSAI_PRPR_SAP_MATNR,DSAI_SP_SAP_MATNR,dsai_subito_transfer_flag) VALUES (40108,'PR000349059','SP000748366','Y');
INSERT INTO OP_DIM_SALES_ITEM(DSAI_ID,DSAI_PRPR_SAP_MATNR,DSAI_SP_SAP_MATNR,dsai_subito_transfer_flag) VALUES (11670,'PR000349059','SP000010709','Y');
INSERT INTO OP_DIM_SALES_ITEM(DSAI_ID,DSAI_PRPR_SAP_MATNR,DSAI_SP_SAP_MATNR,dsai_subito_transfer_flag) VALUES (40096,'PR000349059','SP000748362','Y');
INSERT INTO OP_DIM_SALES_ITEM(DSAI_ID,DSAI_PRPR_SAP_MATNR,DSAI_SP_SAP_MATNR,dsai_subito_transfer_flag) VALUES (40099,'PR000349059','SP000748132','Y');
INSERT INTO OP_DIM_SALES_ITEM(DSAI_ID,DSAI_PRPR_SAP_MATNR,DSAI_SP_SAP_MATNR,dsai_subito_transfer_flag) VALUES (40100,'PR000349059','SP000748130','Y');
INSERT INTO OP_DIM_SALES_ITEM(DSAI_ID,DSAI_PRPR_SAP_MATNR,DSAI_SP_SAP_MATNR,dsai_subito_transfer_flag) VALUES (40101,'PR000349059','SP000748128','Y');
GO
8 rows affected
select DSAI_ID, DSAI_PRPR_SAP_MATNR, DSAI_SP_SAP_MATNR
from OP_DIM_SALES_ITEM
where DSAI_PRPR_SAP_MATNR = 'PR000349059'
and dsai_subito_transfer_flag = 'Y'
GO
DSAI_ID | DSAI_PRPR_SAP_MATNR | DSAI_SP_SAP_MATNR
------: | :------------------ | :----------------
11670 | PR000349059 | SP000010709
40096 | PR000349059 | SP000748362
40099 | PR000349059 | SP000748132
40100 | PR000349059 | SP000748130
40101 | PR000349059 | SP000748128
40106 | PR000349059 | SP000748370
40108 | PR000349059 | SP000748366
40109 | PR000349059 | SP000748364
SELECT
fct.FVPO_VPA_ID
, dim.DSAI_ID
, fct.FVPO_price_product_id
, fct.FVPO_material_number
, dim.DSAI_PRPR_SAP_MATNR
, dim.DSAI_SP_SAP_MATNR
, fct.FVPO_Quantity
FROM OP_DIM_SALES_ITEM dim
LEFT JOIN OP_FCT_SDDB_VPA_POSITION fct ON dim.DSAI_SP_SAP_MATNR = fct.FVPO_material_number
WHERE dim.DSAI_PRPR_SAP_MATNR = 'PR000349059'
AND dim.dsai_subito_transfer_flag = 'Y'
ORDER BY
fct.FVPO_VPA_ID
, dim.DSAI_ID
GO
FVPO_VPA_ID | DSAI_ID | FVPO_price_product_id | FVPO_material_number | DSAI_PRPR_SAP_MATNR | DSAI_SP_SAP_MATNR | FVPO_Quantity
:---------- | ------: | :-------------------- | :------------------- | :------------------ | :---------------- | ------------:
<em>null</em> | 11670 | <em>null</em> | <em>null</em> | PR000349059 | SP000010709 | <em>null</em>
<em>null</em> | 40096 | <em>null</em> | <em>null</em> | PR000349059 | SP000748362 | <em>null</em>
<em>null</em> | 40099 | <em>null</em> | <em>null</em> | PR000349059 | SP000748132 | <em>null</em>
<em>null</em> | 40100 | <em>null</em> | <em>null</em> | PR000349059 | SP000748130 | <em>null</em>
<em>null</em> | 40101 | <em>null</em> | <em>null</em> | PR000349059 | SP000748128 | <em>null</em>
17270 | 40106 | PR000349059 | SP000748370 | PR000349059 | SP000748370 | 5565604
17270 | 40108 | PR000349059 | SP000748366 | PR000349059 | SP000748366 | 2589732
17270 | 40109 | PR000349059 | SP000748364 | PR000349059 | SP000748364 | 1962898
db <> fiddle здесь
Насколько я хочу это сделать. Я не включил группу по частям 1 запроса, который вам нужно будет вернуть, но, надеюсь, теперь вы можете увидеть цель предоставления «образцов данных» (не изображений, а DDL и вставок) и «ожидаемого результата» (также не изображение). С данными и кодом мы можем на самом деле запускать вещи. Кстати, я не ввел все эти данные, но смог перепроектировать комментарий - но даже это не было тем, на что вы должны полагаться, чтобы мы сделали для вас в будущем.
ДОБАВЛЕНО: , чтобы ввести требуемый group by
подзапрос, я предлагаю следующее:
SELECT
fct.FVPO_VPA_ID
, dim.DSAI_ID
, fct.FVPO_price_product_id
, fct.FVPO_material_number
, dim.DSAI_PRPR_SAP_MATNR
, dim.DSAI_SP_SAP_MATNR
, fct.FVPO_Quantity
FROM OP_DIM_SALES_ITEM dim
LEFT JOIN (
SELECT FVPO_VPA_ID, FVPO_price_product_id ,FVPO_material_number, SUM(FVPO_Quantity) AS FVPO_Quantity
FROM OP_FCT_SDDB_VPA_POSITION
GROUP BY FVPO_VPA_ID, FVPO_price_product_id ,FVPO_material_number
) fct ON dim.DSAI_SP_SAP_MATNR = fct.FVPO_material_number
WHERE dim.DSAI_PRPR_SAP_MATNR = 'PR000349059'
AND dim.dsai_subito_transfer_flag = 'Y'
ORDER BY
fct.FVPO_VPA_ID
, dim.DSAI_ID