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

ある値より大きいすべての列を選択します

    データ構造は正規化されていません。ただし、このパスを使用する場合は、次を使用してください:

    select sub.student
    FROM (
      select t.timestamp,
        t.Name,
        t.Total,
        c.col AS student,
        case c.col
          when 'Student1' then Student1
          when 'Student2' then Student2
          when 'Student3' then Student3
          -- ...
        end as d
      from mytable t
      cross join
      (
        select 'Student1' as col
        union all select 'Student2'
        union all select 'Student3'
        -- ...
      ) c
    ) AS sub
    WHERE sub.timestamp = '20150911'
      AND sub.d > 0;
      -- sub.d = 'NA'
      -- sub.d = 0
    

    SqlFiddleDemo

    出力:

    ╔══════════╗
    ║ student  ║
    ╠══════════╣
    ║ Student1 ║
    ║ Student2 ║
    ╚══════════╝
    

    カンマ区切りの結果が必要な場合は、次を使用してください:

    select GROUP_CONCAT(sub.student ORDER BY sub.student) AS result
    

    SqlFiddleDemo2

    出力:

    ╔═══════════════════╗
    ║       result      ║
    ╠═══════════════════╣
    ║ Student1,Student2 ║
    ╚═══════════════════╝
    



    1. 右結合と左結合

    2. SQLで列を削除する方法は?

    3. SQLでの整数としての出力の選択/キャスト

    4. RDS Postgresデータベースをpg_dumpする方法は?