I assumed that you wanted each new order number to start with line number 1 like so:
12345-1
12345-2
12345-3
23456-1
23456-2
etc.
After playing a little fast and loose with your sample query and test data, here's what I came up with:
select
cast(ord.orderNumber as varchar(5)) + '-' + cast(ROW_NUMBER() over (PARTITION BY ord.orderNumber order by partnumber asc) as varchar(10)) as OrderLineNumber
, partNumber
FROM dbo.orders ord
INNER JOIN dbo.orderLines ordln
ON ord.orderNumber = ordln.orderNumber
The important part here is the whole PARTITION BY clause. You might want to look in the help file if you desire more details.
Here is the scenario I built for testing on SQL2008:
create table dbo.orders
(orderNumber int)
create table dbo.orderLines
(
orderNumber int,
lineItem varchar(10),
partNumber varchar(10)
)
insert into dbo.orders
(orderNumber) values
(12345), (23456), (34567), (45678)
insert into dbo.orderLines
(orderNumber, lineItem, partNumber)
values
(12345, 'A1LK0LSRTJ', 'parta123'),
(12345, 'A1LK0LSXU7', 'parta456'),
(12345, 'A1LK0LT39X', 'parta789'),
(23456, 'B1LK0LSRTJ', 'partb123'),
(23456, 'B1LK0LSXU7', 'partb456'),
(23456, 'B1LK0LT39X', 'partb789'),
(34567, 'C1LK0LSRTJ', 'partc123'),
(34567, 'C1LK0LSXU7', 'partc456'),
(34567, 'C1LK0LT39X', 'partc789'),
(45678, 'D1LK0LSRTJ', 'partd123'),
(45678, 'D1LK0LSXU7', 'partd456'),
(45678, 'D1LK0LT39X', 'partd789') And, finally, here are my results:
OrderLineNumber partNumber
12345-1 parta123
12345-2 parta456
12345-3 parta789
23456-1 partb123
23456-2 partb456
23456-3 partb789
34567-1 partc123
34567-2 partc456
34567-3 partc789
45678-1 partd123
45678-2 partd456
45678-3 partd789
Hope this helps! Good luck!