【发布时间】:2020-03-15 12:35:48
【问题描述】:
谁能告诉我我的查询出了什么问题。我肯定知道我在 where 子句中的 case 语句肯定有问题。如果没有 Case 语句,此查询将运行良好。
错误 - 选择失败。 3707: 语法错误,应有类似‘END 关键字在‘)’和“>=”之间的内容
SELECT
mp.chnl_name AS mp_channel,
fsk.sku_prod_id AS pro_id,
fsk.dateint AS avlbl_dt,
fsk.sku_num AS sku,
fsk.upc_txt AS UPC,
Coalesce(fsk.brand_name,'N/A') AS brand,
fsk.ruckload AS LTL_Flag,
fsk.price_amt AS item_selling_price,
fsk.on_hand_unit_qty AS qoh,
fsk.netpropt AS profite,
(fsk.price_amt + fsk.shpg_amt) AS lms,
(GP)*100 AS net_pct
FROM EDW.ITEM_AVLBL mp
JOIN EDW.FULL_SKU fsk ON mp.item_id = fsk.item_id
JOIN EDW.SHORT_SKU ssk ON ssk.sh_sku_id = fsk.sh_sku_id
WHERE 1=1
AND mp.chnl_name LIKE '%google%' ---------- This is a prompt but I hard coded to test
AND fsk.item_create_dt >= '2019-10-20'
AND net_pct >= 10
AND CASE WHEN mp.chnl_name = 'CA_FACEBOOK' THEN ((GP)*100) >= 7 ELSE fsk.first_cost > 500 END
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,fsk.first_cost
谁能告诉我如何解决这个问题?
【问题讨论】:
-
改用 AND/OR 结构。更容易优化。
-
@jarlh 我只需要我的案例条件在 Facebook 上工作。这就是为什么我提出案例条件。知道为什么我会出错吗?
标签: sql teradata teradata-sql-assistant