sql >> データベース >  >> RDS >> Oracle

このクエリをどのように改善できますか?

    サブクエリの代わりに集計を使用します:

    select distinct controlid, 
      max (case when a=3 and b=13 and c=0 and d= 0 then OrderNo end) as colA,
      max (case when a=2                           then OrderNo end) as colB,
      max (case when a=1 and b=14 and e=1          then OrderNo end) as colC,
      max (case when a=3 and b=13 and e=1 and c=0 and d=0 then OrderNo end) as colD,
      max (case when OrderNo=#param2# then a end) as colE
    from my_table
    where controlid = #param1#
    group by controlid
    

    使用しているRDBMSがわからないため、case when 構成は、ローカルの方言に合わせて変更する必要がある場合があります。これはMSSQLで有効である必要があります

    更新:メガネが正しく機能しないため、ORACLEタグに気づきませんでした。恥ずかしい...



    1. 既存の列の値と等しいデフォルト値を持つ列をテーブルに追加します

    2. PostgreSQLサーバーに接続できません:サーバーに接続できませんでした:アクセスが拒否されました

    3. 2つのMySQL列を1つの列に結合する方法は?

    4. sqlalchemyで返すことで生のクエリを実行する方法