0

ユーザーが勤務時間を記録し、次のような時間を見積もることができる課題テーブルがあります

id |  assignee  |  task   |   timespent  |  original_estimate | date
--------------------------------------------------------------------------
1  |  john      |  design |   2          |  3                 | 2013-01-01
2  |  john      |  mockup |   2          |  3                 | 2013-01-02
3  |  john      |  design |   2          |  3                 | 2013-01-01
4  |  rick      |  mockup |   5          |  4                 | 2013-01-04

そして、これを取得するには、タスクと日付ごとに作業時間と推定時間を合計してグループ化する必要があります

assignee  |  task   | total_spent   | total_estimate  |  date
------------------------------------------------------------------
john      |  design | 4             | 6               | 2013-01-01
john      |  mockup | 2             | 3               | 2013-01-02
rick      |  design | 5             | 4               | 2013-01-04

わかりました、これは簡単です、私はすでにこれを持っています:

SELECT assignee, task, SUM(timespent) as total_spent, SUM(original_estimate) AS total_estimate, date FROM issues GROUP BY assignee, task, date

私の問題は、その日にどのタスクにも時間を記録しなかった担当者も表示する必要があることです。

assignee  |  task   | total_spent   | total_estimate  |  date
------------------------------------------------------------------
john      |  design | 4             | 6               | 2013-01-01
john      |  mockup | 2             | 3               | 2013-01-02
rick      |  design | 5             | 4               | 2013-01-04
pete      |  design | 0             | 0               | 2013-01-01
pete      |  mockup | 0             | 0               | 2013-01-02
liz       |  design | 0             | 0               | 2013-01-04
liz       |  mockup | 0             | 0               | 2013-01-04

目標は、このようなチャートを描くことですhttp://jsfiddle.net/uUjst/embedded/result/

4

3 に答える 3

1

参加するには、独自の別のテーブルに担当者が必要です。

SELECT  tblAssignee.Name, task, SUM(timespent) as total_spent, SUM(original_estimate) AS   total_estimate, date 
FROM tblAssignee
    LEFT JOIN issue ON issues.assignee = tblAssignee.Name
GROUP BY tblAssignee.Name, task, date
于 2013-01-23T18:33:07.160 に答える
0

userテーブルはあるが、tasksまたはテーブルはないと仮定するとdates... に存在する値からこれらの値を導出する必要があることを意味しますissues

;WITH dates AS (
    SELECT DISTINCT date
    FROM issues
), tasks AS (
    SELECT DISTINCT task
    FROM issues
)
SELECT 
    u.user as assignee, 
    t.task, 
    SUM(i.timespent) as total_spent, 
    SUM(i.original_estimate) AS total_estimate, 
    d.date 
FROM 
    users u CROSS JOIN
    dates d CROSS JOIN
    tasks t LEFT OUTER JOIN
    issues i ON
        i.assignee = u.user
        AND i.task = t.task
        AND i.date = d.date
GROUP BY u.user, t.task, d.date
于 2013-01-23T18:34:50.150 に答える
0
SELECT
   A.name,
   task,
    ISNULL(SUM(timespent), 0) as total_spent,
    ISNULL(SUM(original_estimate), 0) AS total_estimate,
    date
FROM Assignee A
    LEFT JOIN issue
        ON issues.assignee = A.Name
GROUP BY A.name, task, date
于 2013-01-23T18:39:14.453 に答える