2

コードの最初の部分は、SUMステートメントに基づいてテーブルを作成します。

SELECT varday, COUNT(*) AS Vol,
SUM(FOPS_REHAB) AS FOPS_REHAB,
SUM(FOPS_RECOVERY) AS FOPS_RECOVERY
  FROM table
  WHERE PROCESSING_DATE > '31/aug/2012' and rownumber =1 
GROUP BY varday
ORDER BY varday

ただし、上記のコードに結合したい他の2つのコード部分がありますが、それらには追加の「where」基準があります。

したがって、これらは上記の表に結合したい2つの合計ステートメントです。

select SUM(Current_Balance_Amount)as rec_bal, varday
 into #temp
  from table
   where fops_recovery = 1 and  PROCESSING_DATE > '31/aug/2012' and rownumber =1 
group by varday
ORDER BY varday


select SUM(Current_Balance_Amount)as reh_bal, varday
 into #temp
  from table
   where fops_rehab = 1 and  PROCESSING_DATE > '31/aug/2012' and rownumber =1 
group by varday
ORDER BY varday

したがってreh_bal、とrec_balは、とを含む最初のテーブルと1つのテーブルにありFOPS_REHABますFOPS_RECOVERY。余分な句(where fops recovery = 1 or fops rehab = 1)があるため、問題が発生しています。

4

1 に答える 1

0

3つのクエリすべてを1つに組み合わせることができると思います。これを試してください:

select  varday, 
        COUNT(*) AS Vol,
        SUM(FOPS_REHAB) AS FOPS_REHAB,
        SUM(FOPS_RECOVERY) AS FOPS_RECOVERY,
        SUM(CASE WHEN fops_recovery = 1 THEN Current_Balance_Amount ELSE 0 END) rec_bal,
        SUM(CASE WHEN fops_rehab = 0 THEN Current_Balance_Amount ELSE 0 END) reh_bal
where   PROCESSING_DATE > '31/aug/2012' and rownumber =1 
group   by varday
ORDER   BY varday
于 2012-09-14T11:38:02.957 に答える