2017-05-18 6 views
0

時の条件の集約:列会議の部分部分に私は下記のように3つの列を持つテーブルを持っているGROUPBY

ResponseId | ResponseType | ResponseDateTime 

    1   Complete  2017-04-10 08:13:00.0300000 
    2   Complete  2017-03-17 05:21:00.5800000 
    3   Partial  2017-02-07 16:38:14.3800000 
    4   Not Started 2017-04-12 05:38:33.8366667 

を、私は、テーブルには、私は応答の合計数を取得していること、そのような集約することにしたいですLatestReponseTime(すなわち、ResponseDateTimeのMAX)は、ReponseType = Completeの行で計算されます。

結果の表は、以下のようになります: - :13:見ることができるように

NumberOfResponses | LatestReponseTime 

    4    2017-04-10 08:13:00.0300000 

を、LatestResponseTimeは、2017年4月10日08のMAXが含ま00.0300000し、2017年3月17日午前5時21分: 00.5800000(タイムスタンプはResponseType = Completeです)。

これを達成するためにT-SQLまたはMySQLコマンドを手伝ってもらえますか?

答えて

1

使用条件集合ケースを使用する:

SELECT 
    COUNT(*) as NumberOfResponses, 
    MAX(CASE WHEN ResponseType = 'Complete' THEN ResponseDateTime END) AS LatestReponseTime 
FROM mytable; 
+0

全体ResponseDateTime列が(NULL)が空であるかResponseType = '完了' を有する任意の行が存在しない場合はどうなります? – avinash

+0

その後、LatestReponseTimeはnullです。他に何が期待できますか? –

1

select count(ResponseId), max(case when ResponseType='Complete' then 
ResponseDateTime end) from TableName; 
関連する問題