제품 주문이 포함 된 SQL Server 2008 R2에 테이블이 있습니다. 대부분의 경우,이 제품SQL Server 재사용 쿼리
나는 테이블 식을 사용하여 쿼리를 작성했습니다이ID | Prod | Qty
------------------
1 | A | 1
4 | B | 1
9 | A | 3
12 | C | 1
16 | A | 2
21 | B | 1
처럼 보이는 테이블을 기반으로 뷰를 생성 할
ID | Prod | Qty
------------
1 | A | 1
4 | B | 1
7 | A | 1
8 | A | 1
9 | A | 1
12 | C | 1
15 | A | 1
16 | A | 1
21 | B | 1
당 하나 개의 항목입니다 그러나 나는 그것이 작동하게 만드는 방법에 난처하게된다. 아래의 SQL은 실제로 작동하지 않지만 내가하려고하는 것의 샘플입니다. 이 쿼리는 여러 가지 방법으로 작성했지만 올바른 결과를 얻는 방법을 파악할 수는 없습니다. 순차적 인 ID를 생성하기 위해 row_number를 사용하고 있습니다. 그런 다음 ReleaseId가 순차적이지만 꼭 연속적 일 필요는 없으므로 다음 행에 이전 행과 동일한 제품이 있는지 연속 행을 비교하고 비교할 수 있습니다. 어떤 도움을 주셔서 감사합니다.
;with myData AS
(
SELECT
row_number() over (order by a.ReleaseId) as 'Item',
a.ReleaseId,
a.ProductId,
a.Qty
FROM OrdersReleased a
UNION ALL
SELECT
row_number() over (order by b.ReleaseId) as 'Item',
b.ReleaseId,
b.ProductId,
b.Qty
FROM OrdersReleased b
INNER JOIN myData c ON b.Item = c.Item + 1 and b.ProductId = c.ProductId
)
SELECT * from myData
대안으로, I는 다음과 같이 그것을 writting 시도; AS MYDATA ( 와 '항목' ord.ReleaseId, \t ORD 같은 ord.ReleaseId하여 (순서)를 통해 ROW_NUMBER()를 선택 \t \t FROM .ProductId, ord.Qty 가 '릴리즈' \t c.ProductId 로 맥스 (c.ReleaseId을 선택 ORD ))를 OrdersReleased, 합 (c 같은 .Qty) '수량' \t \t MYDATA C를 FROM LEFT d.Item가 ON MYDATA d를 가입 c.Item = + 1 = d.productid c.productid c.item, c.releaseid, C로 기. productid, c.qty 주문 : c.ReleaseId –