クエリ内の他の計算の結果を再処理するために、選択クエリ内の特定の計算を変数に変更します。この例では変数として必要な値はdt_raw
です。これまでのところ、私はソリューションを実装することに成功しませんでした。sqlは、クエリでさらに使用するための変数としてcalculationを選択します。
SELECT
cpe.entity_id AS product_id,
cpe.sku,
CASE
WHEN (csi.qty - csi.stock_ordered_qty) >= cped2.value AND csi.stock_id = 3 /* on stock burgsdorgstrasse */
THEN 3
WHEN (csi.qty - csi.stock_ordered_qty) >= cped2.value AND csi.stock_id = 4 /* on stock hoppegarten */
THEN 7
WHEN sum(sm_qty) > 2 AND csi.stock_id = 3 /* history burgsdorfstrasse */
THEN round(avg(DATEDIFF(sm.sm_date, po.po_date)) + 3)
WHEN sum(sm_qty) > 2 AND csi.stock_id = 4 /* history hoppegarten */
THEN round(avg(DATEDIFF(sm.sm_date, po.po_date)) + 4)
ELSE cped.value /* default_delivery_time */
END AS dt_raw
FROM `test_live`.`catalog_product_entity` cpe
LEFT JOIN `test_live`.`cataloginventory_stock_item` csi
ON cpe.entity_id = csi.product_id
LEFT JOIN `test_live`.`catalog_product_entity_decimal` cped /* default_delivery_time */
ON cpe.entity_id = cped.entity_id
AND cped.attribute_id = 392
LEFT JOIN `test_live`.`catalog_product_entity_decimal` cped2 /* min_qty_delivery_time */
ON cpe.entity_id = cped2.entity_id
AND cped2.attribute_id = 393
LEFT JOIN `test_live`.`stock_movement` sm
ON cpe.entity_id = sm.sm_product_id
AND sm.sm_type = "supply"
AND sm.sm_date > NOW() - Interval 90 DAY
LEFT JOIN `test_live`.`purchase_order` po
ON po.po_num = sm.sm_po_num
WHERE
csi.is_favorite_warehouse = 1
AND (csi.stock_id = 3 OR csi.stock_id = 4)
GROUP BY cpe.entity_id
さらなる計算ではdt_raw
の結果を使用します。
例:
concat ("ca. ", round(dt_raw), " weeks") as delivery_time
CASE
WHEN dt_raw <= 30
THEN 50
ELSE 0
END AS amazon_qty
は、あなたが正確に何をしたいのか明確ではありません。 – Blank
さらなる計算で「dt_raw」の結果を使用したいと思います。 例:delivery_time CASE として 連結( "約"、ラウンド(dt_raw)、 "週")WHEN dt_raw <= 30 THEN amazon_qty – Turgon
_further calcuations_が正確に何であるAS ELSE 0 END ? – Blank