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

ゼロのみを含む列を検索する

    declare @T table
    (
      Col1 int,
      Col2 int,
      Col3 int,
      Col4 int
    )
    
    insert into @T values
    (1,   0   , null, null),
    (0,   null, 0   , 1)
    
    select U.ColName
    from
      (
        select count(nullif(Col1, 0)) as Col1,
               count(nullif(Col2, 0)) as Col2,
               count(nullif(Col3, 0)) as Col3,
               count(nullif(Col4, 0)) as Col4
        from @T
      ) as T
    unpivot
      (C for ColName in (Col1, Col2, Col3, Col4)) as U
    where U.C = 0
    

    結果:

    ColName
    ----------
    Col2
    Col3
    

    この背後にある考え方は、null以外をカウントすることです。 値を保持し、カウントが0の値のみを保持します 。

    カウント null以外の値のみをカウントします。
    NULLIF(ColX、0) すべての0を作成します nullに 。
    内部クエリは、4列の1行を返します。 UNPIVOT 2列4行になるように向きを変えます。
    最後にwhere U.C = 0 null以外の値を持たない列のみを取得するようにします または0



    1. MySQLチュートリアル– MySQLサーバーログの管理:回転、圧縮、保持、削除

    2. メモリ制限を増やす

    3. $wpdb->挿入が機能していません。エラーなしメッセージ

    4. 他のユーザーにv$sessionへのSELECTアクセスを許可する