I need to detect the gaps between the sequences for each different seller considering that sequence is in 2 different rows considering only supplied range (avoiding numbers below the first record and numbers above the last record):
I have a table with orders where relevant fields are:
SellerID | OrderID | OID |
seller1 | 123456 | |
seller1 | 123457 | |
seller1 | 123458 | 123460 |
seller1 | 123459 | 123460 |
seller2 | 234567 | | (first record)
seller1 | 123455 | |
seller2 | 234568 | 234570 |
seller2 | 234569 | 234570 |
seller1 | 123463 | |
seller1 | 123466 | |
seller1 | 123453 | | (first record)
seller2 | 234572 | | (last record)
seller1 | 123470 | | (last record)
I expect a result like this:
seller 1 | 123454
seller 1 | 123461
seller 1 | 123462
seller 1 | 123464
seller 1 | 123465
seller 1 | 123467
seller 1 | 123468
seller 1 | 123469
seller 2 | 234571
it is quite easy also for me to find gaps in a single row and for single seller: I used this query that I repeat for every seller:
Declare @SellerID nvarchar(50)='seller1'
SELECT s1.OrderID
FROM Orders s1
LEFT JOIN Orders s2
ON s1.OrderID = s2.OrderID -1
WHERE s2.OrderID IS NULL
and SellerID=@SellerID
order by s1.OrderID asc
but I do not know how to modify in way to check for the sequence in the 2 columns
moreover, is there a way to achieve this in a single query instead of repeating for each seller?
SellerID
is ambiguous); once I fix the syntax issue, unable to generate the desired result set for@SellerID = 'seller1'
; are you sure that query works for you? – markp Dec 2 '17 at 20:55