Solved

SQL Server Query Order Allocation

Posted on 2010-09-09
4
305 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

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Join & Write a Comment

Suggested Solutions

Use this article to create a batch file to backup a Microsoft SQL Server database to a Windows folder.  The folder can be on the local hard drive or on a network share.  This batch file will query the SQL server to get the current date & time and wi…
Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.

708 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

13 Experts available now in Live!

Get 1:1 Help Now