Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

T-Sql  update join query

Posted on 2008-10-06
2
Medium Priority
?
1,090 Views
Last Modified: 2012-05-05
Hello,  I have rows I enter into an intermediate table and perform some operations, in the final process I end up inserting  into the main table one row per  each entity defined as same firstname, lastname, storenumber and dateofbirth.  Before I do that, I need to update a field called fillename with the value of the filename based on the max dateentered field for that entity, if the fiilename field is not null.  It is possible that all rows for the entity have null for filename.

Assuming the rows of data below in my intermediate table, I want to update the filename  field all 3 to the filename field to 'blat.jpg'
FirstName LastName    DOB   StoreID  Filename DateEntered
John        Doe     10/1/1966  55         blah.jpg      10/1/2007
John       Doe         10/1/1966    55          blat.jpg      5/11/2008
John       Doe     10/1/1966    55         NULL        9/01/2008
 
Soething like this, but adding the grouping or ranking by datenetered and  adding the filename field to query:

UPDATE      mybuf
SET      filename = A.filename
FROM      tbl_MyBuffer mybuf
      INNER JOIN (SELECT FirstName,LastName,DateOfBirth, StoreID,DateEntered                
                   FROM tbl_MyBuffer   WHERE Len(isNull(fileName,'')) > 0
                     GROUP BY Firstname,Lastname,DateOfBirth,StoreID) A
            ON A.FirstName = mybuf.FirstName
            AND A.lastName = mybuf.lastName
            AND isnull(A.DateOfBirth,'') = isnull(mybuf.DateOfBirth ,'')
            AND A.StoreID = mybuf.StoreID

Since I am using SQL 2005 would this lend itself to rank() ?

Thanks!
0
Comment
Question by:vhpcomp
2 Comments
 
LVL 70

Accepted Solution

by:
Scott Pletcher earned 2000 total points
ID: 22651090
UPDATE      mybuf
SET      filename = B.filename
FROM      tbl_MyBuffer mybuf
      INNER JOIN (SELECT FirstName,LastName,DateOfBirth, StoreID,MAX(DateEntered) AS DateEntered
                   FROM tbl_MyBuffer   WHERE fileName > ''
                     GROUP BY Firstname,Lastname,DateOfBirth,StoreID) A
            ON A.FirstName = mybuf.FirstName
            AND A.lastName = mybuf.lastName
            AND isnull(A.DateOfBirth,'') = isnull(mybuf.DateOfBirth ,'')
            AND A.StoreID = mybuf.StoreID
      INNER JOIN tbl_MyBuffer B
            ON B.FirstName = A.FirstName
            AND B.lastName = A.lastName
            AND isnull(B.DateOfBirth,'') = isnull(A.DateOfBirth ,'')
            AND B.StoreID = A.StoreID
            AND B.DateEntered = A.DateEntered
0
 
LVL 1

Author Closing Comment

by:vhpcomp
ID: 31503432
Works perfectly, thanks.
0

Featured Post

Veeam Task Manager for Hyper-V

Task Manager for Hyper-V provides critical information that allows you to monitor Hyper-V performance by displaying real-time views of CPU and memory at the individual VM-level, so you can quickly identify which VMs are using host resources.

Question has a verified solution.

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

When trying to connect from SSMS v17.x to a SQL Server Integration Services 2016 instance or previous version, you get the error “Connecting to the Integration Services service on the computer failed with the following error: 'The specified service …
One of the most important things in an application is the query performance. This article intends to give you good tips to improve the performance of your queries.
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
Using examples as well as descriptions, and references to Books Online, show the different Recovery Models available in SQL Server and explain, as well as show how full, differential and transaction log backups are performed

971 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