SQL Server 2008 로의 변환에 도움을 찾고 있습니다. 크로스 어플 리케이션과 내부 조인을 시도했는데 (아무렇지도 않았다는 말은하지 않았다.) 아무 소용이 없다 ... 어떤 제안?SQL Server 2008 버전 OVER (... 행 제한이 없습니다.)
본질적으로하는 일은 주식 표와 주문표가 있습니다. 그러나 2012+ I SQL 서버 인에 의해 두 결합은 주식이 날라되면 순서에 따라 이제
WITH ADVPICK
AS (SELECT 'A' AS PlaceA,
placeb,
CASE
WHEN picktime = '00:00' THEN '07:00'
ELSE ISNULL(picktime, '12:00')
END AS picktime,
Cast(product AS INT) AS product,
prd_description,
-qty AS Qty
FROM t_pick_orders
UNION ALL
SELECT 'A' AS PlaceA,
placeb,
'0',
Cast(code AS INT) AS product,
NULL,
stock
FROM t_pick_stock),
STOCK_POST_ORDER
AS (SELECT *,
Sum(qty)
OVER (
PARTITION BY placeb, product
ORDER BY picktime ROWS UNBOUNDED PRECEDING) AS new_qty
FROM ADVPICK)
SELECT *,
CASE
WHEN new_qty > qty THEN new_qty
ELSE qty
END AS order_shortfall
FROM STOCK_POST_ORDER
WHERE new_qty < 0
ORDER BY placeb,
picktime,
product
파티션을 통해 전체 합계 (자세한 내용은 More Details 내 이전 질문 참조) 무엇을 선택하는 나를 보여 이 CROSS APPLY
에 상관 하위 쿼리를 사용하는 것입니다 할
+--------+--------+----------+---------+-----------+-------+---------+-----------------+
| PlaceA | PlaceB | Picktime | product | Prd_Descr | qty | new_qty | order_shortfall |
+--------+--------+----------+---------+-----------+-------+---------+-----------------+
| BW | AMES | 16:00 | 1356 | Product A | -1330 | -17 | -17 |
| BW | AMES | 16:00 | 17 | Product B | -48 | -42 | -42 |
| BW | AMES | 17:00 | 1356 | Product A | -840 | -857 | -840 |
| BW | AMES | 18:00 | 1356 | Product A | -770 | -1627 | -770 |
| BW | AMES | 18:00 | 17 | Product B | -528 | -570 | -528 |
| BW | AMES | 19:00 | 1356 | Product A | -700 | -2327 | -700 |
| BW | AMES | 20:00 | 1356 | Product A | -910 | -3237 | -910 |
| BW | AMES | 20:00 | 8009 | Product C | -192 | -52 | -52 |
| BW | AMES | 20:00 | 897 | Product D | -90 | -10 | -10 |
+--------+--------+----------+---------+-----------+-------+---------+-----------------+
샘플 데이터, 원하는 결과 및 코드가 수행하는 것에 대한 설명이 도움이 될 것입니다. –
질문을 읽어보십시오. 자세한 내용은 –
에서 더 이상 제공되지 않습니다. SQL Server 2008 R2는 더 이상 지원되지 않습니다. 아마도 서버 업그레이드를 고려해야합니까? –