Solved

SQL Server Query Order Allocation

Posted on 2010-09-09
4
307 Views
Last Modified: 2012-08-13
I have two SQL Server database tables.

table: tbSalesOrder
columns: SalesOrderNumber, OrderQty

table: tbSerialNumber
columns: SerialNumber, SalesOrderNumber (Sales Order to which the Serial Number is assigned)

I want to return a list of Sales Order Numbers where the Order Qty is less than the assigned Serial Numbers for that Sales Order. Basically, I need a list of Sales Orders that do not have enough Serial Numbers assigned to fill the order.

Serial Numbers can only be assigned to one Sales Order and Sales Orders can be assigned to more than one Serial Number.

Any help with the T-SQL to make this happen?
0
Comment
Question by:yonbret
  • 2
  • 2
4 Comments
 
LVL 142

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 500 total points
ID: 33638628
this should do:
;with data as (select t.SalesOrderNumber, t1.OrderQty

         , sum(case when t2.SerialNumber is not null then 1 else 0 end) serials

   from tbSalesOrder t1

   left join tbSerialNumber t2

     on t2.SalesOrderNumber = t1.SalesOrderNumber 

   group by t1.SalesOrderNumber, t1.OrderQty

)

select data.*

  from data

 where data.OrderQty > data.Serials

Open in new window

0
 

Author Comment

by:yonbret
ID: 33638828
I have the following code, the portion in the parenthesis is running perfect when ran by itself. However, when I run the whole thing, I am getting an error message: No column was specified for column 1 of 'data'.

I am confused why this error is being generated. Any help?
with data as (select LTrim(RTrim(t1.SONo)), t1.tranlineNo, t1.QtyOrd

         , sum(case when t2.SerialNumber is not null then 1 else 0 end) serials

   from SageProSOTRAN01 t1

   left join tbSerialNumberShipment t2

     on LTrim(RTrim(t1.SONo)) = t2.SalesOrder and  t1.tranlineno = t2.LineNumber

   group by t1.SoNo, t1.tranlineNo, t1.QtyOrd

)

select data.*

  from data

 where data.QtyOrd > data.Serials

Open in new window

0
 

Author Closing Comment

by:yonbret
ID: 33639034
I took the LTrim(RTrim()) out and it worked fine. I move the Trim to the second select statement and got the same result.
0
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 33640127
to fix that error:
with data as (select LTrim(RTrim(t1.SONo)) SoNo, t1.tranlineNo, t1.QtyOrd

         , sum(case when t2.SerialNumber is not null then 1 else 0 end) serials

   from SageProSOTRAN01 t1

   left join tbSerialNumberShipment t2

     on LTrim(RTrim(t1.SONo)) = t2.SalesOrder and  t1.tranlineno = t2.LineNumber

   group by LTrim(RTrim(t1.SONo)), t1.tranlineNo, t1.QtyOrd

)

select data.*

  from data

 where data.QtyOrd > data.Serials

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Why is this different from all of the other step by step guides?  Because I make a living as a DBA and not as a writer and I lived through this experience. Defining the name: When I talk to people they say different names on this subject stuff l…
In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.
Viewers will learn how the fundamental information of how to create a table.

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now