0

別の作業領域で費やされた分数を返す2つの非常によく似たSQLクエリがあります。

それらを1つのクエリに凝縮することは可能ですか?

必要なパラメータ:

現在の月を表示します(1月はIE 1、4月は4)両方のクエリの合計分数を1つのクエリに表示します。

これが私が現在持っている質問です:

SELECT SUM(r.Minutes_Spent) AS 'Custom Programming and Consulting'
FROM TK_Project p
INNER JOIN TK_Task t
ON p.Project_ID = t.Project_ID JOIN TK_Time_Record r
ON t.ID = r.Task_ID
WHERE p.Company = 162
AND p.Name ='Technical Support'
AND r.Work_Date BETWEEN  '04/01/2001'  AND  '04/30/2012'
AND r.Type NOT LIKE '%non%'
AND (r.Type = 'Programming-Billable' OR r.Type = 'Consulting-Billable')

SELECT SUM(r.Minutes_Spent) AS 'Tech. Support / Data Maint. / Training'
FROM TK_Project p
INNER JOIN TK_Task t
ON p.Project_ID = t.Project_ID JOIN TK_Time_Record r
ON t.ID = r.Task_ID
WHERE p.Company = 162
AND p.Name ='Technical Support'
AND r.Work_Date BETWEEN  '04/01/2001'  AND  '04/30/2012'
AND r.Type NOT LIKE '%non%'
AND (r.Type = 'Data Maintenance' OR r.Type = 'Tech Support-Billable' OR r.Type = 'Training')

彼らが提供するデータは次のとおりです。

Custom Programming and Consulting
90

Tech. Support / Data Maint. / Training
105

上記のクエリを1つのクエリにプッシュして、次のデータを返すことは可能ですか?

Month      Custom Programming and Consulting      Tech. Support / Data Maint. / Training
  4                    90                                           105

月は、クエリのこの部分にある現在の月を表示する必要があります。

AND r.Work_Date BETWEEN  '04/01/2001'  AND  '04/30/2012'

これを達成するための最良の方法がわかりません。これをアップグレードする必要がある次の部分は、グラフィカルな棒グラフレポートのために、今日の日付から12か月前に戻ることであるため、月が必要です。

4

1 に答える 1

2

はい 。。。必要な方法で値をグループ化するには、SELECT句にcaseステートメントが必要です。

SELECT 
  SUM(case 
        when r.Type in ('Programming-Billable', 'Consulting-Billable')
        then r.Minutes_Spent
        end) AS "Custom Programming and Consulting",
  SUM(case 
        when (r.Type in ('Data Maintenance', 'Tech Support-Billable', 'Training')
        then r.Minutes_Spent
        end) AS "Tech. Support / Data Maint. / Training"
FROM TK_Project p 
INNER JOIN TK_Task t
  ON p.Project_ID = t.Project_ID 
JOIN TK_Time_Record r
  ON t.ID = r.Task_ID
WHERE p.Company = 162 
  AND p.Name ='Technical Support' 
  AND r.Work_Date BETWEEN  '04/01/2001'  AND  '04/30/2012' 
  AND r.Type NOT LIKE '%non%'
于 2012-05-09T16:15:04.910 に答える