Использование SQL Server 2008 R2: я не могу понять, как обновить временную таблицу, имеющую результаты из инструкции WITH
.Обновление таблицы temp с результатами из инструкции WITH
Временная таблица, которая будет моей главной таблицей, назовем ее #main
, достаточно проста и выглядит так, как показано на первой строке (там будут сотни кодов продуктов, поэтому я не могу жестко скопировать продукт код в растворе):
Product | GapForGoodsinWH1 | GapForGoodsinWH2
1000 | NULL | NULL
в NULLS есть, прежде чем я бег моих с WITH
заявления. Цель WITH
заявления заключается в определении наиболее длительный период времени, в дни, что товар не был получен в определенный склад (обозначенное как WH1 и WH2 в этом примере.
Мой WITH
оператор работает нормально, если я idenfity ProductCode и склад:
WITH GoodsIn AS (
SELECT
Product,
ROW_NUMBER() OVER (ORDER BY GoodsInDate DESC) AS RN,
GoodsInDate
FROM GoodsIn
WHERE
GoodsInDate >= @StartDate
and GoodsInDate <= @EndDate
--
AND Product = 1000
AND Warehouse = 'WH1'
)
SELECT
A.Product,
MAX(DATEDIFF(DD, A.GoodsInDate, B.GoodsInDate)) AS TimeMissing
FROM
GoodsIn A
LEFT JOIN
GoodsIn B ON A.RN = B.RN + 1
GROUP BY
A.Product
HAVING
MAX(DATEDIFF(DD, A.GoodsInDate, B.GoodsInDate)) >= @Missing
Так параметры даты выглядят в течение определенного периода, а параметр @Missing
для пользователя в список продуктов, если они отсутствуют в течение X периода времени (определенный в параметре).
Все, что я хочу сделать, это e xport значение TimeMissing
в мою таблицу #main
, обновив ее на Product
. В этом примере я хотел бы обновить #main.GapForGoodsinWH1
, сопоставив Продукт с #main.product
и Warehouse
до #main.GapForGoodsinWH1
.
Любые идеи приветствуются, заблаговременно.
Можете ли вы предоставить структуру для стола GoodsIn? может ли быть несколько записей для одного и того же продукта в таблице? – Kai
Hello Kai - Да, может быть. У вас будут 'Product',' Warehouse' и 'GoodsInDate'. Будут также количества, но меня это не очень интересует, это анализ пробелов между 'GoodsInDate', так как есть количество в день, когда будет создана запись. Например, продукт 1000 может появляться несколько раз в течение августа, где есть запись для этого продукта, а таблица будет содержать записи для WH1 и WH2. Возможно, у вас могут быть две поставки в тот же день, но это меня не беспокоит, потому что они просто вернут 0 в моем CTE. – TJB
Можете ли вы уточнить, какое значение вы хотите в столбце GapForGoodsinWH1. – Kai