19

HQLで次のことを行う方法はありますか?

SELECT 
    case when flag = true then SUM(col1) else SUM(col2)
FROM 
    myTable
4

7 に答える 7

12

私はあなたができると思います ( 3.6 , 4.3 ) [インライン編集] ... where-clauses:

「単純な」場合、case ... when ... then ... else ... end「検索された」場合、case when ... then ... else ... end

于 2009-01-19T00:19:01.763 に答える
6

どうやらこれを行う機能は 3.0.4で追加されたようで、else 句でサブ選択を使用できないという制限があります。

于 2009-01-19T12:11:51.140 に答える
6

Hibernate フォーラムを参照してください: https://forum.hibernate.org/viewtopic.php?t=942197

チーム (Gavin) からの回答: ケースは where 句でサポートされていますが、HB3 の select 句ではサポートされていません。

また、状態が「未解決」の JIRA で見られます。

于 2010-01-15T09:41:39.537 に答える
4

以下に、2 つの case ステートメントを使用してブール値を対応するテキスト表現に置き換える作業クエリ (postgresql で休止状態) を示します。

SELECT CASE ps.open WHEN true THEN 'OPEN' else 'CLOSED' END, CASE ps.full WHEN true THEN THEN 'FULL' else 'FREE' END, ps.availableCapacity FROM ParkingState as ps

于 2009-02-12T12:44:28.283 に答える
-2

これは、次の条件で文字列比較を使用した例です。

SELECT CASE f.type WHEN 'REMOVE'
                   THEN f.previousLocation 
                   ELSE f.currentLocation 
       END 
FROM FileOperation f
于 2009-06-10T15:06:43.360 に答える