尝试通过浏览并选择 2 个价格来查询正确的价格
这些按重要性从高到低排列
[tran_type]
等于Quot
则选择这个价格[default_level]
大于0,将是1-8之间的数字我遇到的问题是
[default_level]
只是一个带有数值的占位符,用于表示从 1 到 8 的定价水平
当
[default_level]
大于 0 时的价格将作为空白 [start_cust_or_group]
存储在同一个表中,[level_]
是与 1-8 定价级别相关的值。
所以说,如果
[default_level]
是 6,那么我需要拉动的正确价格是 [start_cust_or_group]
等于空白 [level_]
将为 6,并且可用的最新日期 [start_date]
商品或价格代码 | uom_代码 | tran_type | 默认_级别 | 级别_ | 价格 |
---|---|---|---|---|---|
27MIETE11K | EA | 6 | 0 | 0.00 | |
22RGRD45BS | CT | 引用 | 0 | 144.10 |
以下是我希望的最终结果 因此,对于第一个项目(27MIETE11K),它看到 tran_type 为空,然后继续前进,发现 default_level 为 6,因此选择 Level_,其中 6 和 start_cust_or_group 为空并采用该价格。那么它看到的下一个项目 (22RGRD45BS) 的 tran_type 是 quot,因此它会填充 LevelResult 中的价格(这部分带有 Quot 的查询已经可以工作)。
商品或价格代码 | uom_代码 | 水平结果 |
---|---|---|
27MIETE11K | EA | 29.57 |
22RGRD45BS | CT | 144.10 |
这是我的主要问题:
SELECT
[item_or_pricecode], [uom_code],
CASE
WHEN [tran_type] <> '' THEN [price]
WHEN [default_level] > 0 THEN XXXXXX
ELSE 0
END AS LevelResult
FROM
[test].[tablepricing].[pricing]
WHERE
[start_cust_or_group] = '7000192'
AND [cust_shipto_num] = '2'
AND [RowDeleted] = 0
ORDER BY
[start_date] DESC
如果我输入
[default_level]
,代码就可以工作,但只会返回 default_level
列中 LevelResult
的值。
我认为我需要在放置
XXXXXX
的位置有一个选择查询,但我不确定如何将 [default_level]
传递给选择查询以与 [level_]
匹配,或者是否可能。
SELECT
x.[item_or_pricecode], x.[uom_code], x.[level_], x.[price],x.[start_date]
FROM
(SELECT
x.[item_or_pricecode], x.[uom_code], x.[level_], x.[price],x.[start_date],
ROW_NUMBER() OVER (PARTITION BY x.[item_or_pricecode] ORDER BY x.[start_date] DESC, x.[level_] ASC) AS rn
FROM
[test].[tablepricing].[pricing] AS x
WHERE
[start_cust_or_group] = ''
AND [RowDeleted] = 0
AND [item_or_pricecode] = '27MIETE11K') AS x
WHERE
x.rn <= 8
商品或价格代码 | uom_代码 | 级别_ | 价格 | 开始日期 |
---|---|---|---|---|
27MIETE11K | EA | 1 | 38.65 | 2024-01-15 |
27MIETE11K | EA | 2 | 34.81 | 2024-01-15 |
27MIETE11K | EA | 3 | 33.05 | 2024-01-15 |
27MIETE11K | EA | 4 | 31.43 | 2024-01-15 |
27MIETE11K | EA | 5 | 30.49 | 2024-01-15 |
27MIETE11K | EA | 6 | 29.57 | 2024-01-15 |
27MIETE11K | EA | 7 | 28.97 | 2024-01-15 |
27MIETE11K | EA | 8 | 28.39 | 2024-01-15 |
这是一个单独的查询,用于显示价格水平以及我如何找到每个条目的最新日期。
通常如果我这么做了
WHERE item_or_pricecode = '27MIETE11K'
AND start_cust_or_group = ''
在定价表上,我会得到 78 个条目,其中混杂着较旧的价格。
我希望这能得到解释,谢谢!
参见示例
select p.prod_id,p.prod_name,dates.d, coalesce(month_sale_amount,0) month_sale_amount
from dates
left join (select distinct prod_id,prod_name from product_sales) p on 1=1
left join(
select prod_id,date_trunc('month',sale_date) sale_date
,sum(sale_amount) as month_sale_amount
from product_sales
group by prod_id,date_trunc('month',sale_date)
) total_sales on sale_date=dates.d and total_sales.prod_id=p.prod_id
order by dates.d,p.prod_id
产品 ID | 产品名称 | d | 月份销售金额 |
---|---|---|---|
1 | 测试1 | 2023-01-01 | 3 |
2 | 测试2 | 2023-01-01 | 8 |
3 | 测试3 | 2023-01-01 | 9 |
1 | 测试1 | 2023-02-01 | 5 |
2 | 测试2 | 2023-02-01 | 2 |
3 | 测试3 | 2023-02-01 | 1 |
1 | 测试1 | 2023-03-01 | 0 |
2 | 测试2 | 2023-03-01 | 7 |
3 | 测试3 | 2023-03-01 | 0 |
1 | 测试1 | 2023-04-01 | 1 |
2 | 测试2 | 2023-04-01 | 2 |
3 | 测试3 | 2023-04-01 | 0 |
1 | 测试1 | 2023-05-01 | 6 |
2 | 测试2 | 2023-05-01 | 4 |
3 | 测试3 | 2023-05-01 | 2 |