34,873
社区成员
发帖
与我相关
我的任务
分享--测试数据
with 表1 (产品id,产品基准价格,定价单号,数量区间起,数量区间止)
as
(
select 1,200,101,0,0 union all
SELECT 2,300,102,0,50 union all
SELECT 3,250,103,50,0
),表2(产品id,产品价格,定价单号,数量)AS(
select 1,150,104,50 union all
select 1,133.33,105,70 union all
SELECT 2,280,106,25 union all
SELECT 2,260.88,110,30 union all
select 3,220,120,80 union all
select 3,210.99,130,100
)
--测试数据结束
,temp1 AS (
SELECT 表2.产品id ,
MAX(表2.定价单号) AS 定价单号
FROM 表2
GROUP BY 表2.产品id
)
SELECT 表1.产品id ,
( CASE WHEN ( SELECT 表2.数量
FROM 表2
WHERE temp1.定价单号 = 表2.定价单号
AND temp1.产品id = 表2.产品id
) > 表1.数量区间起
AND ( 表1.数量区间止 = 0
OR ( SELECT 表2.数量
FROM 表2
WHERE temp1.定价单号 = 表2.定价单号
AND temp1.产品id = 表2.产品id
) < 表1.数量区间止
) THEN ( SELECT 表2.产品价格
FROM 表2
WHERE temp1.定价单号 = 表2.定价单号
AND temp1.产品id = 表2.产品id
)
ELSE 表1.产品基准价格
END ) AS 产品基准价格 ,
( CASE WHEN ( SELECT 表2.数量
FROM 表2
WHERE temp1.定价单号 = 表2.定价单号
AND temp1.产品id = 表2.产品id
) > 表1.数量区间起
AND ( 表1.数量区间止 = 0
OR ( SELECT 表2.数量
FROM 表2
WHERE temp1.定价单号 = 表2.定价单号
AND temp1.产品id = 表2.产品id
) < 表1.数量区间止
) THEN ( SELECT 表2.定价单号
FROM 表2
WHERE temp1.定价单号 = 表2.定价单号
AND temp1.产品id = 表2.产品id
)
ELSE 表1.定价单号
END ) AS 定价单号 ,
表1.数量区间起 ,
表1.数量区间止
FROM 表1
INNER JOIN temp1 ON temp1.产品id = 表1.产品id; 