[英]Need some assistance doing a join of tables
我有两个SQL表,我想加入它们以显示如下所示的时间表:
WorkID WorkDesc TaskOneStart TaskOneEnd TaskTwoStart TaskTwoEnd TaskThreeStart TaskThreeEnd TaskFourStart TaskFourEnd 1 Job 1 10:00 11:00 11:00 12:00 13:00 14:00 15:00 16:00 2 Job 2 10:00 11:00 11:00 12:00 13:00 14:00 NULL NULL 3 Job 3 10:00 11:00 NULL NULL NULL NULL NULL NULL 4 Job 4 10:00 11:00 NULL NULL 13:00 14:00 NULL NULL Table Work ID WorkDesc 1 Job 1 2 Job 2 3 Job 3 4 Job 4 Table Task ID WorkID TaskDesc StartTime EndTime 1 1 TaskOne 10:00 11:00 2 1 TaskTwo 11:00 12:00 3 1 TaskThree 13:00 14:00 4 1 TaskFour 15:00 16:00 5 2 TaskOne 10:00 11:00 6 2 TaskTwo 11:00 12:00 7 2 TaskThree 13:00 14:00 8 3 TaskOne 10:00 11:00 9 4 TaskOne 10:00 11:00 10 4 TaskThree 13:00 14:00
至少可以说,我是SQL新手。 我所有的尝试都导致该表具有300多个行而不是4行。任何帮助将不胜感激。
假设有固定数量的任务:
SELECT W.ID WorkID,
W.WorkDesc,
MIN(CASE WHEN TaskDesc = 'TaskOne' THEN StartTime END) TaskOneStart,
MIN(CASE WHEN TaskDesc = 'TaskOne' THEN EndTime END) TaskOneEnd,
MIN(CASE WHEN TaskDesc = 'TaskTwo' THEN StartTime END) TaskTwoStart,
MIN(CASE WHEN TaskDesc = 'TaskTwo' THEN EndTime END) TaskTwoEnd,
MIN(CASE WHEN TaskDesc = 'TaskThree' THEN StartTime END) TaskThreeStart,
MIN(CASE WHEN TaskDesc = 'TaskThree' THEN EndTime END) TaskThreeEnd,
MIN(CASE WHEN TaskDesc = 'TaskFour' THEN StartTime END) TaskFourStart,
MIN(CASE WHEN TaskDesc = 'TaskFour' THEN EndTime END) TaskFourEnd
FROM dbo.Work W
LEFT JOIN dbo.Task T
ON W.ID = T.WorkID
GROUP BY W.ID WorkID,
W.WorkDesc
ORDER BY W.ID WorkID,
W.WorkDesc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.