私は販売の瞬間に購入価格を取得しようとしています。私のテーブルには同じ商品の購入価格が異なります。販売時点での購入価格を取得
購入価格は2つの日付で定義されています。有効期限の開始日と有効期限終了日はそれぞれDATE_DEB_VALIDとDATE_FIN_VALIDです。
私が販売時点(FLIGHT_DATE)で獲得した数を知りたいのであれば、同じ期間に購入価格を知る必要があります。
TB_DW_VAB_SALES
- ID_TEC_SALES
- TRANSACTION_NUMBER
- CARRIER_CODE
- MASTER_FLIGHT_NUMBER
- FLIGHT_NUMBER
- FLIGHT_DATE
- FLIGHT_CITY_DEP
- FLIGHT_CITY_ARR
- PRODUCT_CODE
- QUANTITY
- UNIT_SALES_PRICE
- PROMOTION_CODE
- CREW_PRICE
- COMPLEMENTARY
- SALES_TYPE
- DATE_CHGT
TB_DW_VAB_PURCHASE
- PRODUCT_CODE
- PRODUCT_CODE_GUEST
- LIB_PRODUCT
- PRICE DATE_DEB_VALID
- DATE_FIN_VALID
- DATE_CHGT
マイリクエスト: 私のフライトの日付は "DATE_DEB_VALID" と "DATE_FIN_VALID"
の間で二つのテーブルでなければなりません
SELECT (TB_DW_VAB_PURCHASE.PRODUCT_CODE),PRICE
FROM TB_DW_VAB_PURCHASE,TB_DW_VAB_SALES
WHERE FLIGHT_DATE BETWEEN DATE_DEB_VALID AND DATE_FIN_VALID AND to_char(FLIGHT_DATE,'YYYY')= '2016' OR to_char(FLIGHT_DATE,'YYYY')= '2015'
GROUP BY TB_DW_VAB_PURCHASE.PRODUCT_CODE, PRICE
ここでは、(情報のため)全体の要求を持っています:
SELECT to_char(DATE_VENTE,'MM/YYYY'),sum(MARGE_TOTALE) FROM (
SELECT
CTE1.CA AS CHIFFRE_AFFAIRE_TOTAL,
CTE2.PRICE AS COUT_UNITAIRE,
CTE1.FLIGHT_DATE as DATE_VENTE,
CTE1.QTE*CTE2.PRICE AS COUT_ACHAT,
(CTE1.CA-CTE1.QTE*CTE2.PRICE) AS MARGE,
sum((CTE1.CA-CTE1.QTE*CTE2.PRICE)) as MARGE_TOTALE
FROM (
SELECT PRODUCT_CODE,
sum(QUANTITY*UNIT_SALES_PRICE) AS CA,
FLIGHT_DATE,
sum(QUANTITY) as QTE
FROM TB_DW_VAB_SALES
where SALES_TYPE = 'SALES' and to_char(FLIGHT_DATE,'YYYY')= '2015' OR to_char(FLIGHT_DATE,'YYYY')= '2016'
group by to_char(FLIGHT_DATE,'MM'),FLIGHT_DATE,PRODUCT_CODE
ORDER BY to_char(FLIGHT_DATE,'MM') ASC
)CTE1
inner join
(
SELECT (TB_DW_VAB_PURCHASE.PRODUCT_CODE),PRICE
FROM TB_DW_VAB_PURCHASE,TB_DW_VAB_SALES
WHERE FLIGHT_DATE BETWEEN DATE_DEB_VALID AND DATE_FIN_VALID AND to_char(FLIGHT_DATE,'YYYY')= '2016' OR to_char(FLIGHT_DATE,'YYYY')= '2015'
GROUP BY TB_DW_VAB_PURCHASE.PRODUCT_CODE, PRICE
) CTE2
on CTE1.PRODUCT_CODE=CTE2.PRODUCT_CODE
group by to_char(FLIGHT_DATE,'MM'), FLIGHT_DATE, 'MM', CTE1.FLIGHT_DATE, (CTE1.CA-CTE1.QTE*CTE2.PRICE),
CTE1.CA, CTE1.QTE, CTE2.PRICE, CTE1.QTE*CTE2.PRICE
) group by to_char(DATE_VENTE,'MM/YYYY') ORDER BY to_char(DATE_VENTE,'MM/YYYY') ASC;
ありがとうございます!
SQL Serverタグを削除しました。コードは明らかにOracleです。 –
テーブル構造(DDL)、サンプルデータ、および期待される結果が役立ちます。あなたは正確に何を苦労していますか?エラーが出るのですか、結果だけではありませんか? –
エラーなし、無限ループのみ – devicz