[Webinar] Streamline your web hosting managementRegister Today

x
?
Solved

Group by with a min() and same row detail..

Posted on 2010-09-23
8
Medium Priority
?
651 Views
Last Modified: 2012-05-10
Given the following two tables :

Table A            
StockID      Item      
1      Desks      
2      Chairs      
3      Tables      
4      Plants      
5      Lights      
            
            
Table B            
StockID      Date      Qty
4      01/01/2010      2
4      05/02/2010      5
4      06/02/2010      1
3      06/02/2010      5
3      14/03/2010      3


What select query would join and select earliest date value only and corresponding quantity. :                              
e.g :

StockID      Item      Date      Qty            
4      Plants      01/01/2010      2            
3      Tables      06/02/2010      5            

Thanks in advance!
0
Comment
Question by:dgloveruk
8 Comments
 
LVL 39

Expert Comment

by:BrandonGalderisi
ID: 33746204
Do you have an identity column in the table?
0
 
LVL 7

Expert Comment

by:waltersnowslinarnold
ID: 33746224
Use the following code sample..,
SELECT a.StockID, a.Item, MIN(b.Date), b.Qty FROM TableA a 
INNER JOIN TableB b ON b.StockID = a.StockID
GROUP BY a.StockID, a.Item, b.Qty

Open in new window

0
 
LVL 23

Expert Comment

by:Rajkumar Gs
ID: 33746354
Try this query. This should work on SQL Server 2000 also.

Regards
Raj
SELECT a.StockID, a.Item, b.Date, b.Qty            
FROM tableB B
INNER JOIN tableA A
	on a.StockID = b.StockID
INNER JOIN
(
	select StockID, max(date) as Date
	from tableB
	group by StockID
) C on c.StockID = B.StockID and c.Date = B.Date

Open in new window

0
[Webinar] Improve your customer journey

A positive customer journey is important in attracting and retaining business. To improve this experience, you can use Google Maps APIs to increase checkout conversions, boost user engagement, and optimize order fulfillment. Learn how in this webinar presented by Dito.

 
LVL 23

Expert Comment

by:Rajkumar Gs
ID: 33746370
Oh! for "earliest' date use min instead of max

Raj
SELECT a.StockID, a.Item, b.Date, b.Qty            
FROM #tableB B
INNER JOIN #tableA A
	on a.StockID = b.StockID
INNER JOIN
(
	select StockID, min(date) as Date
	from #tableB
	group by StockID
) C on c.StockID = B.StockID and c.Date = B.Date

Open in new window

0
 
LVL 4

Expert Comment

by:parthmalhan
ID: 33751512
Try the following code:

SELECT a.StockID, a.Item, b.Date, b.Qty            
FROM t2 B
INNER JOIN t1 A
    on a.StockID = b.StockID
INNER JOIN
(
    select StockID, min(date) as Date
    from t2
    group by StockID
) C on c.StockID = B.StockID and c.Date = B.Date

this will give you the records for minimum date for every stockid
0
 

Author Comment

by:dgloveruk
ID: 33751931
Sorry I should have made clearer, this is SQL server 2000 as in the tags, but unfortunately I couldn't see a sql 2000 group to post this against.

Unfortunately none of the examples above worked.  My tables are named a and b for simplicity...

BrandonGalderisi:
There is an identity coloumn in table B but it isn't relevant to the solution or any join.  The earliest date does not mean the lowest identifier in this solution either so it lends no function there.

waltersnowslinarnold:
invalid object name dbo.tableA

RajkumarGS:
Invalid object name dbo.tableB

parthmalhan:
Invalid object name dbo.t2

Thanks guys for your suggestions any tweaks suggested?
0
 
LVL 2

Accepted Solution

by:
willz123 earned 2000 total points
ID: 33754097
Hi

Try this one. Hope it helps and good luck. You should be able to see the concept on how to get the right answer even if its not 100% corrent
select A.item, B.date, B.qty from
A inner join B on A.stockID = B.stockID
inner join
(
	select stockID, MIN(date) as date
	from B
	group by stockID
) X on X.stockID = B.stockID and X.date = B.date

Open in new window

0
 

Author Closing Comment

by:dgloveruk
ID: 33873774
Thanks alot, that got me there.  I often get this sort of query where I need a join based on the minimum value of another field in the joining table and its other corresponding values, so this helps alot.
Thanks again!
0

Featured Post

2018 Annual Membership Survey

Here at Experts Exchange, we strive to give members the best experience. Help us improve the site by taking this survey today! (Bonus: Be entered to win a great tech prize for participating!)

Question has a verified solution.

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

There are some very powerful Dynamic Management Views (DMV's) introduced with SQL 2005. The two in particular that we are going to discuss are sys.dm_db_index_usage_stats and sys.dm_db_index_operational_stats.   Recently, I was involved in a di…
In this article, we will show how to detach and attach a database and then show how to repair a corrupt database and attach it, If it has some errors. We will show how to detach and attach using SSMS or using T-SQL sentences.
SQL Database Recovery Software repairs the MDF & NDF Files, corrupted due to hardware related issues or software related errors. Provides preview of recovered database objects and allows saving in either MSSQL, CSV, HTML or XLS format. Ensures recov…
Stellar Phoenix SQL Database Repair software easily fixes the suspect mode issue of SQL Server database. It is a simple process to bring the database from suspect mode to normal mode. Check out the video and fix the SQL database suspect mode problem.
Suggested Courses

607 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