Select a specific column based on another column's value

前端 未结 4 1594
挽巷
挽巷 2021-02-12 22:05

I have a table like this

ID | Type | Val0 | Val1
1  |  0   |  A   | NULL
2  |  1   | NULL |  B

I need to select Val0 when the type

相关标签:
4条回答
  • 2021-02-12 23:03

    The way I read this, you need to use UNION:

    SELECT a.val0
      FROM TABLE a
     WHERE a.type = 0
    UNION ALL
    SELECT a.val1
      FROM TABLE a
     WHERE a.type = 1
    UNION ALL ...
    

    UNION ALL doesn't remove duplicates, and is faster than UNION (because it removes duplicates).

    Doing this dynamically is possible.

    0 讨论(0)
  • 2021-02-12 23:04

    See CASE statement http://msdn.microsoft.com/en-us/library/ms181765.aspx

    0 讨论(0)
  • 2021-02-12 23:09
    SELECT CASE
              WHEN Type = 0 THEN Val0
              WHEN Type = 1 Then Val1
              .
              .
              WHEN Type = N Then ValN
           END 
      FROM tbl
    
    0 讨论(0)
  • 2021-02-12 23:09

    For low values of N, you can do it ad-hoc using the CASE statement, like CASE Type WHEN 0 THEN Val0 WHEN 1 THEN Val1 END. If your N is bigger, you should probably normalize your database (i.e. put ID => ValN mappings in a different table).

    0 讨论(0)
提交回复
热议问题