webForumDet fria alternativet

Update med olika villkor

8 svar · 623 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej :)

Jag har en update enligt följande:

UPDATE tblTask
       SET CustomT2 = [b]c.[Category][/b], Modified = GETDATE()
  
FROM tblTask t
INNER
	JOIN tblCustomer c
		ON t.CustomerNr = c.[Nr]
INNER 
	JOIN tblUsers u
		ON t.UserSign = u.[Sign]
INNER
	JOIN tblWorkGroups wg
		ON u.GroupId = wg.[Id]
WHERE DATEDIFF(d, t.planstartdate, GETDATE()) = 1
AND wg.[Id] <> 10002

Dvs uppdatera alla poster där datumet är gårdagens och där tblWorkGroup.Id INTE ÄR 10002

Jag vill lägga till att uppdatera även de poster där tblWorkGroup.Id ÄR 10002 enligt:

UPDATE tblTask
       SET CustomT2 = [b]wg.[Name][/b], Modified = GETDATE()
  
FROM tblTask t
INNER
	JOIN tblCustomer c
		ON t.CustomerNr = c.[Nr]
INNER 
	JOIN tblUsers u
		ON t.UserSign = u.[Sign]
INNER
	JOIN tblWorkGroups wg
		ON u.GroupId = wg.[Id]
WHERE DATEDIFF(d, t.planstartdate, GETDATE()) = 1
AND wg.[Id] = 10002

Kan man göra detta i samma update? :)

Mvh
Henrik

drewMedlem sedan mars 2007845 inlägg
#2

Om det ska vara datum gårdagen på dom som är grupp 10002 så räcker det med att ta bord AND wg.[Id] <> 10002
Annars ändrar du till OR wg.[Id] = 10002

Peter SMedlem sedan dec. 20025 483 inlägg
#3
UPDATE tblTask
       SET CustomT2 = case when wg.id = 10002 then wg.[Name] else c.category end, Modified = GETDATE()
  
FROM tblTask t
INNER
	JOIN tblCustomer c
		ON t.CustomerNr = c.[Nr]
INNER 
	JOIN tblUsers u
		ON t.UserSign = u.[Sign]
INNER
	JOIN tblWorkGroups wg
		ON u.GroupId = wg.[Id]
WHERE DATEDIFF(d, t.planstartdate, GETDATE()) = 1
devotionMedlem sedan jan. 20013 582 inlägg
#4

Hepp!!

Ser ju fint ut!

:)

Mvh
Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#5

Peter S skrev:

UPDATE tblTask
       SET CustomT2 = case when wg.id = 10002 then wg.[Name] else c.category end, Modified = GETDATE()
  
FROM tblTask t
INNER
	JOIN tblCustomer c
		ON t.CustomerNr = c.[Nr]
INNER 
	JOIN tblUsers u
		ON t.UserSign = u.[Sign]
INNER
	JOIN tblWorkGroups wg
		ON u.GroupId = wg.[Id]
WHERE DATEDIFF(d, t.planstartdate, GETDATE()) = 1

Kan man använda case till flera villkor?

Typ:

SET CustomT2 = case when wg.id IN (10002, 10004) then wg.[Name] case when wg.id IN (20001, 20002 then c.category end, Modified = GETDATE()

Mvh
Henrik

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Üngefär

UPDATE tblTask
       SET CustomT2 = case when wg.id in (10002,10004) then wg.[Name] when wg.id in (20001,20002) then wg.name2 else c.category end, Modified = GETDATE()
  
FROM tblTask t
INNER
	JOIN tblCustomer c
		ON t.CustomerNr = c.[Nr]
INNER 
	JOIN tblUsers u
		ON t.UserSign = u.[Sign]
INNER
	JOIN tblWorkGroups wg
		ON u.GroupId = wg.[Id]
WHERE DATEDIFF(d, t.planstartdate, GETDATE()) = 1
devotionMedlem sedan jan. 20013 582 inlägg
#7

Peter S skrev:

Üngefär

UPDATE tblTask
       SET CustomT2 = case when wg.id in (10002,10004) then wg.[Name] when wg.id in (20001,20002) then wg.name2 else c.category end, Modified = GETDATE()
  
FROM tblTask t
INNER
	JOIN tblCustomer c
		ON t.CustomerNr = c.[Nr]
INNER 
	JOIN tblUsers u
		ON t.UserSign = u.[Sign]
INNER
	JOIN tblWorkGroups wg
		ON u.GroupId = wg.[Id]
WHERE DATEDIFF(d, t.planstartdate, GETDATE()) = 1

Aha!

devotionMedlem sedan jan. 20013 582 inlägg
#8

Hmmm

Hur gör jag följande:

UPDATE tblTask
       SET CustomT2 = case when wg.id in (77711,77715,77717,77720,77711) then c.category when wg.id in (77719) then wg.Name else  'GÖR-INGENTING' end, Modified = GETDATE()

Mvh
henrik

Peter SMedlem sedan dec. 20025 483 inlägg
#9
UPDATE tblTask
       SET CustomT2 = case when wg.id in (77711,77715,77717,77720,77711) then c.category when wg.id in (77719) then wg.Name else CustomT2 end, Modified = GETDATE()
125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)