0

以下のクエリを使用すると、指定された日付の JIRA のすべての issueType の問題の数 (いいえ) を確認できます。

すなわち。

  SELECT count(*), STEP.STEP_ID
  FROM (SELECT STEP_ID, ENTRY_ID
  FROM OS_CURRENTSTEP
  WHERE OS_CURRENTSTEP.START_DATE < '<your date>'
  UNION SELECT STEP_ID, ENTRY_ID
  FROM OS_HISTORYSTEP
  WHERE OS_HISTORYSTEP.START_DATE < '<your date>'
  AND OS_HISTORYSTEP.FINISH_DATE > '<your date>' ) As STEP,
  (SELECT changeitem.OLDVALUE AS VAL, changegroup.ISSUEID AS ISSID
  FROM changegroup, changeitem
  WHERE changeitem.FIELD = 'Workflow'
  AND changeitem.GROUPID = changegroup.ID
  UNION SELECT jiraissue.WORKFLOW_ID AS VAL, jiraissue.id as ISSID
  FROM jiraissue) As VALID,
  jiraissue as JI
  WHERE STEP.ENTRY_ID = VALID.VAL
  AND VALID.ISSID = JI.id
 AND JI.project = <proj_id>
  Group By STEP.STEP_ID;

結果は

Status   Count
open       12
closed      13
.....     ....

私が達成したいのは、実際にはこのようなものです..各日のステータスの合計数が開いている場所と閉じている場所です。

Date        COUNT(Open)      COUNT(Closed)
12-1-2012     12                 1
13-1-2012      14                5 
4

1 に答える 1

1

一般的な戦略は次のようになります。

月のすべての日の表から選択

毎日のカウントを取得するテーブルを LEFT OUTER JOIN します

(その日のエントリがなかった場合に必要な左外部結合、ゼロ値を表示する必要があります)。

したがって、これは大まかに必要なものだと思います(完全ではなく、日付関数の構文はおそらくあなたのデータベースでは間違っていますが、近づくでしょう):

SELECT aDate
, COALESCE(SUM(CASE WHEN IssueStatus = 'whateverMeansOpen' THEN 1 END,0)) OpenCount
, COALESCE(SUM(CASE WHEN IssueStatus = 'whateverMeansClosed' THEN 1 END,0)) ClosedCount
FROM
(
    SELECT DATEADD(DAY, I, @START_DATE)  aDate
    FROM 
    (
        SELECT number AS I FROM [SomeTableWithAtLeast31Rows]
        where number between 1 and 31
    ) Numbers
    WHERE DATEADD(DAY, I, @START_DATE) < @END_DATE
) DateTimesInInterval 
LEFT OUTER JOIN
(
    Put your query here. It needs to output two columns, DateTimeOfIssue and IssueStatus
) yourHugeQuery ON yourHugeQuery.DateTimeOfIssue BETWEEN aDate and DATEADD(DAY, 1, aDate)
GROUP BY aDate
ORDER BY aDate
于 2012-08-23T15:25:21.703 に答える