2015-08-03 3 views
0

Я пытаюсь понять эту логику. У меня есть некоторые данные проекта, для которых я должен написать инструкцию T-SQL.SQL, если случай истинен, выберите столбцы

По существу у меня есть люди, которые отмечают «окончательную задачу» в своем проекте как завершенные, но у них есть задачи над ним, которые не полны, поэтому в исполнительной панели мониторинга они показывают проект как завершенный, но когда execs рассматривают расчет они видят не 100%, а, возможно, 90%. Очевидно, люди пытаются сыграть в систему, отметив задачу «Go live Complete» на 100%, когда они не будут выполнены. Мне нужен запрос, чтобы я мог видеть, если они отметили Go live complete как 100%, мне нужно увидеть любые другие задачи, которые не являются 100%.

Существует сложный фактор. У нас есть несколько проектов, поэтому, когда я смотрю на любые другие задачи, не составляющие 100%, это должно быть только для этого проекта.

Это то, что у меня есть:

SELECT 
    CASE 
     WHEN TaskName = 'Go Live Complete' 
      AND TaskPercentCompleted = '100' 
      AND ***'any other tasks are not 100% for that project'*** 
     THEN ***'Show me the columns below'*** 
     {ProjectName] 
     ,[SMO Programs] 
     ,[ProjectUID] 
     ,[Project Manager Name] 
     ,[TaskUID] 
     ,[ParentTaskUID] 
     ,[TaskName] 
     ,[TaskIndex] 
     ,[TaskOutlineLevel] 
     ,[Milestone Significance Level] 
     ,[TaskOutlineNumber] 
     ,[TaskStartDate] 
     ,[TaskFinishDate] 
     ,[TaskPercentCompleted] 
     ,[EPRIDTaskName], 
FROM 
    [ProjectWebApp].[dbo].[SMO_ALL_MTP_Tasks] 
+0

Откуда вы знаете, что другие задачи не на 100%? – Hogan

+0

ok с вашим редактированием, почему бы просто не поместить все ваши критерии в инструкцию WHERE? – Hogan

ответ

0

Может быть, это будет работать ... трудно сказать без дополнительной информации

WITH BADTASKS AS 
(
    SELECT ProjctName, TaskName, SMO Programs, ProjectUID, [Project Manager Name], TaskUID, ParentTaskUID, TaskName, TaskIndex, TaskOutlineLevel, [Milestone Significance Level], 
     TaskOutlineNumber, TaskStartDate, TaskFinishDate, TaskPercentCompleted, EPRIDTaskName 
    FROM ProjectWebApp.dbo.SMO_ALL_MTP_Tasks 
    WHERE TaskPercentCompleted != '100' 
) 
SELECT DONE.TaskName, DONE.TaskPercentCompleted, BADTASKS.* 
FROM SMO_ALL_MTP_Tasks DONE 
LEFT JOIN BADTASKS ON ALL.ProjectName = BADTASKS.ProjectName 
WHERE DONE.TaskName = 'Go Live Complete' AND DONE.TaskPercentCompleted = '100' 
+0

Это получило мне 90% пути, и я смог закончить его! Благодаря! Отметьте ваш ответ. – Bob

0

Это то, что я закончил с:

WITH BADTASKS AS 
(
    SELECT ProjectName, TaskName, [SMO Programs], [ProjectUID], [Project Manager Name], TaskUID, ParentTaskUID, TaskIndex, TaskOutlineLevel, [Milestone Significance Level], 
     TaskOutlineNumber, TaskStartDate, TaskFinishDate, TaskPercentCompleted, EPRIDTaskName, EPRID 
    FROM ProjectWebApp.dbo.SMO_ALL_MTP_Tasks 
    WHERE TaskPercentCompleted != '100' AND TaskFinishDate < '2015-08-25 23:00:00.000' 
) 
SELECT DONE.TaskName, DONE.TaskPercentCompleted, BADTASKS.* 
FROM ProjectWebApp.dbo.SMO_ALL_MTP_Tasks DONE 
inner JOIN BADTASKS ON (
done.ProjectName = BADTASKS.ProjectName AND 
substring(done.TaskOutlineNumber, 1, len(done.TaskOutlineNumber) - charindex('.', reverse(done.TaskOutlineNumber))) = substring(badTasks.TaskOutlineNumber, 1, len(badtasks.TaskOutlineNumber) - charindex('.', reverse(badtasks.TaskOutlineNumber))) 
) 
WHERE DONE.TaskName = 'Go Live Complete' AND DONE.TaskPercentCompleted = '100' AND done.TaskFinishDate < '2015-08-25 23:00:00.000' 
Смежные вопросы