0

ここでは、私のシナリオを説明します。

次のテーブルがあります。

Table : Service_Type

Id  | Service_Name | Service_Table_Name|
----------------------------------------
1   |   FA         |    FA     |
2   |   TPA        |        TPA        |


Table: Service_Mapping

Id  | Service_Type_Id |
---------------------------
1   |   1     |
2   |   2     |
3   |   2     |
4   |   1     |

Table: FA

Id  | Created_date| Qty |
-----------------------------
1   | 3/20/2012   | 20  |
2   | 4/22/2012   | 10  |
3   | 5/12/2012   | 15  |
4   | 6/3/2012    | 5   |

Table: TPA

Id  | Created_date| Qty |
-----------------------------
1   | 5/20/2012   | 2   |
2   | 7/22/2012   | 10  |
3   | 1/12/2012   | 1   |
4   | 9/3/2012    | 5   |

次のような出力が必要です。

Month | FA| TPA|
----------------
Jan     0   1
Mar     1   0
Apr     1   0
Jul     1   0
Sep     0   1

出力では、FAおよびTPAテーブルのCreated_dateフィールドにそれぞれ月が必要です。そして、月に関して、1か月にFAとTPAが何回発生するかの合計が必要です。

私は次のような出力を取得しました

FA   |  TPA  |
--------------
3    |  2    |

SELECT 
SUM(CASE WHEN Service_Type_Id = 1 THEN 1 ELSE 0 END) AS FA, 
SUM(CASE WHEN Service_Type_Id = 2 THEN 1 ELSE 0 END) AS TPA 
FROM Service_Mapping

しかし今、私はそれらが発生した月にそれぞれ分岐したいと思います。TPAおよびFAの提出日より。

4

2 に答える 2

0

別のアプローチも確認できます。

SELECT Mon.monthNAME, SUM(tpCount) tpCount, SUM(faCount) faCount FROM
(
    SELECT DATENAME(MONTH,created_date) AS [monthNAME], MONTH(created_date) [month], YEAR(created_date) as [year], 0 AS tpCount, 1 as faCount FROM FA
    UNION
    SELECT DATENAME(MONTH,created_date) AS [monthNAME], MONTH(created_date) [month], YEAR(created_date) as [year], 1 as tpCount, 0 AS faCount FROM TPA
) Mon 
GROUP BY 
   [monthNAME],[month],[year]
ORDER BY 
    Mon.[year], Mon.[month]
于 2013-04-15T10:38:50.870 に答える