@beth私は以下のコードを使って個々のprojecttIdのためにこれを動作させました。代わりにピボットを使用しての私は、最後にデータをピボットするには、手動case文を持っている:
ALTER PROCEDURE [dbo].[rpt_ReportingMilestones]
(@ProjectId int = null)
AS
BEGIN
SELECT sco.CID,
sco.CodeName,
t1.EndDate as rsEndDate,
t2.EndDate as pmEndDate,
t2.CodeName as RAGStatus
INTO #TTT
FROM StatusCode sco
LEFT OUTER JOIN
(SELECT sc.CID,
rs.EndDate
FROM StatusCode sc
INNER JOIN ReleaseSchedule rs
ON sc.CID = rs.MilestoneCID
INNER JOIN Project p
ON rs.ReleaseID = p.ReleaseID
AND p.ProjectId = @ProjectId) as t1
ON sco.CID = t1.CID
LEFT OUTER JOIN
(SELECT sc.CID,
pm.EndDate,
sc2.CodeName
FROM StatusCode sc
INNER JOIN ProjectMilestone pm
ON sc.CID = pm.MilestoneCID
AND pm.ProjectID = @ProjectId
INNER JOIN StatusCode sc2
ON pm.RAGStatusCID = sc2.CID) as t2
ON sco.CID = t2.CID
WHERE sco.CID in (37, 39, 41, 45, 47, 50, 53, 72, 73, 75, 77)
CREATE TABLE #UUU
(rowid integer not null,
rowHeader nvarchar(50),
milestone1 DateTime,
ragstatus1 nvarchar(50),
milestone2 DateTime,
ragstatus2 nvarchar(50),
milestone3 DateTime,
ragstatus3 nvarchar(50),
milestone4 DateTime,
ragstatus4 nvarchar(50),
milestone5 DateTime,
ragstatus5 nvarchar(50),
milestone6 DateTime,
ragstatus6 nvarchar(50),
milestone7 DateTime,
ragstatus7 nvarchar(50),
milestone8 DateTime,
ragstatus8 nvarchar(50),
milestone9 DateTime,
ragstatus9 nvarchar(50),
milestone10 DateTime,
ragstatus10 nvarchar(50),
milestone11 DateTime,
ragstatus11 nvarchar(50))
INSERT INTO #UUU
SELECT 2 as RowId,
'Baseline' as rowHeader,
CASE WHEN CID = 37 THEN rsEndDate ELSE null END as Milestone1,
null,
CASE WHEN CID = 39 THEN rsEndDate ELSE null END as Milestone2,
null,
CASE WHEN CID = 41 THEN rsEndDate ELSE null END as Milestone3,
null,
CASE WHEN CID = 45 THEN rsEndDate ELSE null END as Milestone4,
null,
CASE WHEN CID = 47 THEN rsEndDate ELSE null END as Milestone5,
null,
CASE WHEN CID = 50 THEN rsEndDate ELSE null END as Milestone6,
null,
CASE WHEN CID = 53 THEN rsEndDate ELSE null END as Milestone7,
null,
CASE WHEN CID = 72 THEN rsEndDate ELSE null END as Milestone8,
null,
CASE WHEN CID = 73 THEN rsEndDate ELSE null END as Milestone9,
null,
CASE WHEN CID = 75 THEN rsEndDate ELSE null END as Milestone10,
null,
CASE WHEN CID = 77 THEN rsEndDate ELSE null END as Milestone11,
null
FROM #TTT
INSERT INTO #UUU
SELECT 3 as RowId,
'Adjusted',
CASE WHEN CID = 37 THEN pmEndDate ELSE null END as Milestone1,
CASE WHEN CID = 37 THEN RAGStatus ELSE null END as RAGStatus1,
CASE WHEN CID = 39 THEN pmEndDate ELSE null END as Milestone2,
CASE WHEN CID = 39 THEN RAGStatus ELSE null END as RAGStatus2,
CASE WHEN CID = 41 THEN pmEndDate ELSE null END as Milestone3,
CASE WHEN CID = 41 THEN RAGStatus ELSE null END as RAGStatus3,
CASE WHEN CID = 45 THEN pmEndDate ELSE null END as Milestone4,
CASE WHEN CID = 45 THEN RAGStatus ELSE null END as RAGStatus4,
CASE WHEN CID = 47 THEN pmEndDate ELSE null END as Milestone5,
CASE WHEN CID = 47 THEN RAGStatus ELSE null END as RAGStatus5,
CASE WHEN CID = 50 THEN pmEndDate ELSE null END as Milestone6,
CASE WHEN CID = 50 THEN RAGStatus ELSE null END as RAGStatus6,
CASE WHEN CID = 53 THEN pmEndDate ELSE null END as Milestone7,
CASE WHEN CID = 53 THEN RAGStatus ELSE null END as RAGStatus7,
CASE WHEN CID = 72 THEN pmEndDate ELSE null END as Milestone8,
CASE WHEN CID = 72 THEN RAGStatus ELSE null END as RAGStatus8,
CASE WHEN CID = 73 THEN pmEndDate ELSE null END as Milestone9,
CASE WHEN CID = 73 THEN RAGStatus ELSE null END as RAGStatus9,
CASE WHEN CID = 75 THEN pmEndDate ELSE null END as Milestone10,
CASE WHEN CID = 75 THEN RAGStatus ELSE null END as RAGStatus10,
CASE WHEN CID = 77 THEN pmEndDate ELSE null END as Milestone11,
CASE WHEN CID = 77 THEN RAGStatus ELSE null END as RAGStatus11
FROM #TTT
SELECT Rowid,
rowHeader,
MAX(Milestone1) AS 'BRS',
MAX(RagStatus1) AS 'BRS RAG',
MAX(Milestone2) AS 'SRS',
MAX(RagStatus2) AS 'SRS RAG',
MAX(Milestone3) AS 'SAD',
MAX(RagStatus3) AS 'SAD RAG',
MAX(Milestone4) AS 'Product Profile Review',
MAX(RagStatus4) AS 'Product Profile Review RAG',
MAX(Milestone5) AS 'SE Integration',
MAX(RagStatus5) AS 'SE Integration RAG',
MAX(Milestone6) AS 'IDE',
MAX(RagStatus6) AS 'IDE RAG',
MAX(Milestone7) AS 'UAT',
MAX(RagStatus7) AS 'UAT RAG',
MAX(Milestone8) AS 'PE Testing',
MAX(RagStatus8) AS 'PE Testing RAG',
MAX(Milestone9) AS 'Code Freeze',
MAX(RagStatus9) AS 'Code Freeze RAG',
MAX(Milestone10) AS 'Dark Pod',
MAX(RagStatus10) AS 'Dark Pod RAG',
MAX(Milestone11) AS 'Production',
MAX(RagStatus11) AS 'Production RAG'
FROM #UUU
GROUP BY Rowid, rowHeader
ORDER BY RowId
END
プロジェクトのマイルストーンの構造は何テーブルを日付の変更は可能ですか? – Thomas
より具体的には、リリーススケジュールの日付はどこから来ますか? – Thomas
構造がExcelファイルにあります。日付はすべて、BRSの開始日を除いて同じ論理ですが、最初のマイルストーンの開始日を使用し、残りは終了日を使用する、このコアレス(projectmilestone.endDate、releaseschedual.endDate)のような@Thomasのようなものです。 – kacalapy