АШ
string query =
$@"
SELECT
PR.pkey + '-' + CAST(JI.issuenum as nvarchar(255)) as 'IssueKey',
P.pname as 'Priority',
JI.ASSIGNEE as 'Assignee',
(CASE JIS.pname WHEN 'Reopened' THEN 'Open' ELSE JIS.pname END) as 'CurrentStatus',
(CASE CAST(CI.OLDSTRING as nvarchar(20)) WHEN 'Reopened' THEN 'Open' ELSE CI.OLDSTRING END) as 'OldStatus',
(CASE CAST(CI.NEWSTRING as nvarchar(20)) WHEN 'Reopened' THEN 'Open' ELSE CI.NEWSTRING END) as 'NewStatus',
CG.CREATED as 'ExecutedOn',
NULL as 'Rating',
0.0 as 'WorkloggedSeconds',
0 as 'ReAssignedTimes'
FROM jiraissue JI
INNER JOIN project PR ON PR.ID = JI.PROJECT
JOIN issuestatus JIS ON JI.issuestatus = JIS.ID
JOIN priority P ON JI.PRIORITY = P.ID
JOIN changegroup CG ON JI.ID = CG.issueid
JOIN changeitem CI ON CG.ID = CI.groupid AND CI.FIELD = 'status'
WHERE
JI.PROJECT IN (11471,19280) {assigneeClause} AND (JI.CREATED BETWEEN '{start
.ToString("yyyy-MM-dd")} 00:00:00' AND '{end.ToString("yyyy-MM-dd")} 23:59:59')
UNION ALL
SELECT
PR2.pkey+'-'+CAST(JI2.issuenum as nvarchar(255)) as 'IssueKey',
P.pname as 'Priority',
JI2.ASSIGNEE as 'Assignee',
(CASE JIS.pname WHEN 'Reopened' THEN 'Open' ELSE JIS.pname END) as 'CurrentStatus',
NULL as 'OldStatus',
'Open' as 'NewStatus',
ISNULL((SELECT TOP 1 CG2.CREATED FROM changegroup CG2 JOIN changeitem CI2 ON CG2.ID = CI2.groupid AND JI2.ID = CG2.issueid AND CI2.FIELD = 'assignee' AND CAST(CI2.NEWVALUE as nvarchar(255)) = JI2.ASSIGNEE ORDER BY CG2.CREATED ASC), JI2.CREATED) as 'ExecutedOn',
CFO.customvalue as 'Rating',
ISNULL((SELECT SUM(W.timeworked) FROM worklog W WHERE W.issueid = JI2.ID AND (W.UPDATED BETWEEN '{start
.ToString("yyyy-MM-dd")} 00:00:00' AND '{end.ToString("yyyy-MM-dd")} 23:59:59')),0.0) as 'WorkloggedSeconds',
(SELECT COUNT(*) FROM changegroup CG2 JOIN changeitem CI2 ON CG2.ID = CI2.groupid AND JI2.ID = CG2.issueid AND CI2.FIELD = 'assignee') as 'ReAssignedTimes'
FROM jiraissue JI2
INNER JOIN project PR2 ON PR2.ID = JI2.PROJECT
JOIN issuestatus JIS ON JI2.issuestatus = JIS.ID
JOIN priority P ON JI2.PRIORITY = P.ID
LEFT JOIN customfieldvalue CFV ON (CFV.ISSUE = JI2.ID AND CFV.customfield=12010)
LEFT JOIN customfieldoption CFO ON CFO.id = TRY_PARSE(CFV.stringvalue as numeric(18,0)) and CFO.parentoptionid is null
WHERE JI2.PROJECT IN (11471,19280) {assigneeClause
.Replace("JI", "JI2")}
AND (JI2.CREATED BETWEEN '{start.ToString("yyyy-MM-dd")} 00:00:00' AND '{end
.ToString("yyyy-MM-dd")} 23:59:59')
ORDER BY ExecutedOn ASC
";