webForumDet fria alternativet

visa schema, problem

7 svar · 475 visningar · startad av Vinnaren

VinnarenMedlem sedan sep. 2005858 inlägg
#1

Har följande:

	SELECT (c.FirstName+' '+c.LastName) AS Name,
	(SELECT TOP 1 (ms.FromTime+'-'+ms.ToTime) FROM Schedule AS ms INNER JOIN [Status] AS s ON s.StatusId = ms.StatusId WHERE ms.ChildId = c.ChildId AND YEAR(ms.Date) = @Year AND DatePart(ww, ms.Date) = @Week AND DATEPART(dw, ms.Date) = 2) AS Monday

	FROM Child AS c

När Monday är null så vill jag istället för att returnera null returnera s.Name, skulle även s.Name vara null ska saknas returneras i Monday.

Hur löser man detta??

Tacksam för all hjälp :stud

Peter SMedlem sedan dec. 20025 484 inlägg
#2
(SELECT TOP 1 coalesce(ms.FromTime+'-'+ms.ToTime,coalesce(s.Name,'saknas')) FROM Schedule AS ms INNER JOIN [Status] AS s ON s.StatusId = ms.StatusId WHERE ms.ChildId = c.ChildId AND YEAR(ms.Date) = @Year AND DatePart(ww, ms.Date) = @Week AND DATEPART(dw, ms.Date) = 2) AS Monday
VinnarenMedlem sedan sep. 2005858 inlägg
#3

tack, men resultatet blir detsamma. Monday innehåller null :r

Peter SMedlem sedan dec. 20025 484 inlägg
#4

Iiih! Inlägget är uppdaterat :)

VinnarenMedlem sedan sep. 2005858 inlägg
#5

tack, men det blir fortfarande null :(

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

Hm, så här då:

(SELECT TOP 1 case when ms.FromTime is null or ms.ToTime is null then coalesce(s.Name, 'saknas') else ms.FromTime+'-'+ms.ToTime end FROM Schedule AS ms INNER JOIN [Status] AS s ON s.StatusId = ms.StatusId WHERE ms.ChildId = c.ChildId AND YEAR(ms.Date) = @Year AND DatePart(ww, ms.Date) = @Week AND DATEPART(dw, ms.Date) = 2) AS Monday
LarsGMedlem sedan dec. 200012 465 inlägg
#7
coalesce((select ...),'saknas')

Om subselecten inte hittar någon post så returnerar den null

VinnarenMedlem sedan sep. 2005858 inlägg
#8

tack, nu fungerar den :D

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb