SQL 2005.
I have and Orders and Order_Lines table. There is one record in the Orders table and one or more corresponding records in the Order_Lines table. For each order (determined by Orders.ORDER_NUMBER), I need to concatenate a few fields from the Order_Lines table. The syntax I have below is close to what I need, except that it only returns one row where it concatenates the Order_Lines fields from ALL of the orders instead of returning multiple rows, one for each order.
Declare @Result varchar(8000)
Declare @Order_Number float
Create table #Results (ORDER_NUMBER float, FUNCTIONS text)
Select @Result =
IsNull(
@Result
+ ','
+ char(13)
+ Order_Lines.DESCRIPTION
+ ' - Qty. '
+ convert(varchar(10), Order_Lines.QUANTITY_ORDERED)
+ ' - $'
+ convert(varchar(10),Order_Lines.EXTENDED_AMOUNT)
,
+ char(13)
+ Order_Lines.DESCRIPTION
+ ' - Qty. '
+ convert(varchar(10), Order_Lines.QUANTITY_ORDERED)
+ ' - $'
+ convert(varchar(10),Order_Lines.EXTENDED_AMOUNT)
),
@Order_Number=Orders.ORDER_NUMBER
From Order_Lines, Orders, Order_Meet, Product_Function
Where Orders.ORDER_NUMBER=Order_Lines.ORDER_NUMBER and Orders.ORDER_NUMBER=Order_Meet.ORDER_NUMBER and
Order_Lines.PRODUCT_CODE=Product_Function.PRODUCT_CODE and
Order_Meet.MEETING='ABC10' and Orders.STATUS not in ('C','CT') and Order_Lines.QUANTITY_ORDERED>=1
Group by Orders.ORDER_NUMBER, Product_Function.SEQ, Order_Lines.DESCRIPTION, Order_Lines.QUANTITY_ORDERED, Order_Lines.EXTENDED_AMOUNT
Insert into #Results (ORDER_NUMBER, FUNCTIONS)
Select @Order_Number, @Result
select * from #Results
drop table #Results
What I get is this:
ORDER_NUMBER FUNCTIONS
22817 20X20 Booth - Qty. 1 - $9000.00,
Courtesy Discount - Qty. 1 - $-674.00,
Member Discount - Qty. 4 - $-2260.00,
10X20 Booth - Qty. 1 - $4500.00,
Corner Booth Fee - Qty. 1 - $200.00,
Member Discount - Qty. 2 - $-1130.00,
10X20 Booth - Qty. 1 - $4500.00
The above isn't correct as the functions are actually from 3 different orders. What I should see is:
ORDER_NUMBER FUNCTIONS
22817 20X20 Booth - Qty. 1 - $9000.00,
Courtesy Discount - Qty. 1 - $-674.00,
Member Discount - Qty. 4 - $-2260.00,
22818 10X20 Booth - Qty. 1 - $4500.00,
Corner Booth Fee - Qty. 1 - $200.00,
Member Discount - Qty. 2 - $-1130.00,
22819 10X20 Booth - Qty. 1 - $4500.00
Is it a loop that I need? How do I start to construct this? Thanks.
Anna Jaeger
iMIS Database Support
I have and Orders and Order_Lines table. There is one record in the Orders table and one or more corresponding records in the Order_Lines table. For each order (determined by Orders.ORDER_NUMBER), I need to concatenate a few fields from the Order_Lines table. The syntax I have below is close to what I need, except that it only returns one row where it concatenates the Order_Lines fields from ALL of the orders instead of returning multiple rows, one for each order.
Declare @Result varchar(8000)
Declare @Order_Number float
Create table #Results (ORDER_NUMBER float, FUNCTIONS text)
Select @Result =
IsNull(
@Result
+ ','
+ char(13)
+ Order_Lines.DESCRIPTION
+ ' - Qty. '
+ convert(varchar(10), Order_Lines.QUANTITY_ORDERED)
+ ' - $'
+ convert(varchar(10),Order_Lines.EXTENDED_AMOUNT)
,
+ char(13)
+ Order_Lines.DESCRIPTION
+ ' - Qty. '
+ convert(varchar(10), Order_Lines.QUANTITY_ORDERED)
+ ' - $'
+ convert(varchar(10),Order_Lines.EXTENDED_AMOUNT)
),
@Order_Number=Orders.ORDER_NUMBER
From Order_Lines, Orders, Order_Meet, Product_Function
Where Orders.ORDER_NUMBER=Order_Lines.ORDER_NUMBER and Orders.ORDER_NUMBER=Order_Meet.ORDER_NUMBER and
Order_Lines.PRODUCT_CODE=Product_Function.PRODUCT_CODE and
Order_Meet.MEETING='ABC10' and Orders.STATUS not in ('C','CT') and Order_Lines.QUANTITY_ORDERED>=1
Group by Orders.ORDER_NUMBER, Product_Function.SEQ, Order_Lines.DESCRIPTION, Order_Lines.QUANTITY_ORDERED, Order_Lines.EXTENDED_AMOUNT
Insert into #Results (ORDER_NUMBER, FUNCTIONS)
Select @Order_Number, @Result
select * from #Results
drop table #Results
What I get is this:
ORDER_NUMBER FUNCTIONS
22817 20X20 Booth - Qty. 1 - $9000.00,
Courtesy Discount - Qty. 1 - $-674.00,
Member Discount - Qty. 4 - $-2260.00,
10X20 Booth - Qty. 1 - $4500.00,
Corner Booth Fee - Qty. 1 - $200.00,
Member Discount - Qty. 2 - $-1130.00,
10X20 Booth - Qty. 1 - $4500.00
The above isn't correct as the functions are actually from 3 different orders. What I should see is:
ORDER_NUMBER FUNCTIONS
22817 20X20 Booth - Qty. 1 - $9000.00,
Courtesy Discount - Qty. 1 - $-674.00,
Member Discount - Qty. 4 - $-2260.00,
22818 10X20 Booth - Qty. 1 - $4500.00,
Corner Booth Fee - Qty. 1 - $200.00,
Member Discount - Qty. 2 - $-1130.00,
22819 10X20 Booth - Qty. 1 - $4500.00
Is it a loop that I need? How do I start to construct this? Thanks.
Anna Jaeger
iMIS Database Support