2016-06-17 10 views
0

私は、Springを使ってHibernate(JPAを使用)を使ってクエリを実行しています。JPAとMySQL:句でグループの開始日と終了日が揃っているかどうかを知る

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

------------------------------------------------ 
| building_id | cost | start_date | end_date | 
------------------------------------------------ 
| 1   | 23 | 2015-03-02 | 2015-04-05 | 
------------------------------------------------ 
| 1   | 25 | 2015-04-02 | 2015-05-05 | 
------------------------------------------------ 
| 2   | 23 | 2015-03-01 | 2015-04-09 | 
------------------------------------------------ 
| 2   | 25 | 2015-04-02 | 2015-05-05 | 
------------------------------------------------ 

マイ照会する:各建物

  • ためのコスト

    1. サムアップはEND_DATEのSTART_DATEの最小値と最大値を取得します
    2. start_dateとend_dateが同じかどうかは、建物のグループごとに分かります。あなたは上記のクエリを使用して見ることができるように私は私の最初の2つの要件を満たすことができ

      SELECT sum(ct.cost), min(ct.startDate), max(ct.endDate) from ConcernedTable ct where ct.buildingId in :buildingIds AND ct.startDate >= :startDate and ct.endDate <= :endDate and group by YEAR(ct.endDate), MONTH(ct.endDate) 
      

      :これまでのところ、私は次のクエリを書かれている

    。しかし、建物の開始日と終了日が同じかどうかをどうやって取得するのか分かりません。

    誰かお手伝いできますか?

  • 答えて

    0

    方法は、MAX(日付)と分(日)betwen diffが0であると

    SELECT 
          sum(ct.cost) 
         , min(ct.startDate) 
         , max(ct.endDate) 
         , case max(ct2.startDate) - min(ct2.startDate) when 0 the KO else OK END 
        from ConcernedTable ct 
        inner join ConcernedTable as ct2 on ct.buildingId = ct2.buildingId 
        where ct.buildingId in :buildingIds 
        AND ct.startDate >= :startDate 
        and ct.endDate <= :endDate 
        and group by YEAR(ct.endDate), MONTH(ct.endDate) 
    
    +0

    を示し、しかし、START_DATEが同じ日付を持っていることが起こるかもしれないが、END_DATEがない場合は、チェックです。その場合、クエリは正しい結果を返しません。 – Raj

    +0

    説明します。あなたはスタートデートと終了日について何が必要ですか?あなたからの質問は、2つの日付が同じであることを望ましくないようですね...期間は月ですか、別ですか? – scaisEdge

    +0

    開始日と終了日が次のような3つの建物を考えてみましょう: 1. 2015-03-02 | 2015-04-05 2. 2015-03-02 | 2015-04-05 3,2015-03-03 | 2015-04-06 建物1と2の開始日と終了日は同じですが、建物3では異なる開始日と終了日が設定されています。この場合、日付の整列の結果は偽でなければなりません – Raj

    関連する問題