问题是数据库缺少某些值,我需要在最近的交叉表查询中查找它们。
我交叉的表格似乎是这样的:
它缺少竞争对手价格的价值 - 对于第111项,我没有第一个竞争对手的第3周和第2个竞争对手的第2周的价格。对于项目222,我错过第一个竞争者的第二周价格和第二个竞争者的1,3周。我想在输出数据中使用最接近的周价格。
输出(用于价格指数计算)必须如下所示(列中的竞争者价格,以便在excel的数据透视表中进一步计算):
问题是如何“查找”最接近的周竞争对手的价格,我标记了橙色的缺失价格。
我希望问题很清楚,如果有任何问题 - 请问,我会尽力澄清一切! 非常感谢提前!
UPD。 我尝试以下面的方式(使用子查询):
SELECT m_week, item_code, my_price, (SELECT TOP 1 com_price
FROM MyTable AS T
WHERE T.item_code = MyTable.item_code
AND T.m_week <= MyTable.m_week
AND competotor_id = 1
ORDER BY T.m_week) AS Comp1_price, (SELECT TOP 1 com_price
FROM MyTable AS T
WHERE T.item_code = MyTable.item_code
AND T.m_week <= MyTable.m_week
AND competotor_id = 2
ORDER BY T.m_week) AS Comp2_price
... the same for each competitor
FROM MyTable
它有效...但非常慢,我需要为每个竞争对手复制/粘贴。接下来的事情 - 我想要不仅搜索价格,还要搜索价格(沿着几周)
答案 0 :(得分:0)
您可以将交叉表基于使用子查询的查询:
SELECT p.competitor_id, p.m_week, p.item_code, p.com_price, p.my_price,
nz(p.com_price,
(Select top 1 week_price FROM
(
SELECT m_week, item_code, Max(com_price) AS week_price
FROM YourTable
WHERE com_price Is Not Null
GROUP BY m_week, item_code
) as WeekPrices
WHERE [item_code]=p.item_code and m_week < p.m_week
ORDER BY m_week desc)) as com_price_calc
FROM YourTable AS p;