Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
danielc
Starting Member
49 Posts |
Posted - 2006-08-14 : 16:55:15
|
Hello All,I have written the following query and would like to condense it to a shorter update query:USE db1GOUPDATE stuSET ln =CASE WHEN StudentLastName <> '' AND SchoolCode = SC THEN StudentLastName ELSE lnENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET fn =CASE WHEN StudentFirstName <> '' AND SchoolCode = SC THEN StudentFirstName ELSE fnENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET mn =CASE WHEN StudentMiddleName <> '' AND SchoolCode = SC THEN StudentMiddleName ELSE mnENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET ad =CASE WHEN MailAddress <> '' AND SchoolCode = SC THEN MailAddress ELSE adENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET cy =CASE WHEN mailcity <> '' AND SchoolCode = SC THEN mailcity ELSE cyENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET st =CASE WHEN mailstate <> '' AND SchoolCode = SC THEN mailstate ELSE stENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET zc =CASE WHEN mailzip <> '' AND SchoolCode = SC THEN mailzip ELSE zcENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET rad =CASE WHEN resaddress <> '' AND SchoolCode = SC THEN resaddress ELSE radENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET rcy =CASE WHEN rescity <> '' AND SchoolCode = SC THEN rescity ELSE rcyENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET rst =CASE WHEN resstate <> '' AND SchoolCode = SC THEN resstate ELSE rstENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET rzc =CASE WHEN reszip <> '' AND SchoolCode = SC THEN reszip ELSE rzcENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET tl =CASE WHEN homephone <> '' AND SchoolCode = SC THEN homephone ELSE tlENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stuSET bd =CASE WHEN studentdob <> '' AND SchoolCode = SC THEN studentdob ELSE bdENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stu SET sx = CASE WHEN Gender <> '' AND SchoolCode = SC THEN Gender ELSE sxENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stu SET ec = CASE WHEN ethnicity1 <> '' AND SchoolCode = SC THEN ethnicity1 ELSE ecENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stu SET ec2 = CASE WHEN ethnicity2 <> '' AND SchoolCode = SC THEN ethnicity2 ELSE ec2ENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stu SET hl = CASE WHEN homelang <> '' AND SchoolCode = SC THEN homelang ELSE hlENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stu SET bcy = CASE WHEN cityborn <> '' AND SchoolCode = SC THEN cityborn ELSE bcyENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stu SET bst = CASE WHEN stateborn <> '' AND SchoolCode = SC THEN stateborn ELSE bstENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stu SET bcu = CASE WHEN countryborn <> '' AND SchoolCode = SC THEN countryborn ELSE bcuENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentidUPDATE stu SET ped = CASE WHEN parentedu <> '' AND SchoolCode = SC THEN parentedu ELSE pedENDFROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentid;It works, but too long and beleive there could be an alternative to shorten it.Thank you in advance for your help... |
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2006-08-14 : 17:25:51
|
Combine them into one query:UPDATE stuSET ln = CASE WHEN StudentLastName <> '' AND SchoolCode = SC THEN StudentLastName ELSE ln END, fn = CASE WHEN StudentFirstName <> '' AND SchoolCode = SC THEN StudentFirstName ELSE fn END,...FROM db1.dbo.STU s JOIN db2.dbo.StudentEnrollment se ON s.id = se.studentid Tara Kizer |
 |
|
|
|
|