복붙노트

[SQL] SQL : CASE 문에있는 사용을위한 별칭 열 이름

SQL

SQL : CASE 문에있는 사용을위한 별칭 열 이름

그것은 열 이름은 별칭으로 가능하며 다음 CASE 문에서 그 사용합니까? 예를 들어,

SELECT col1 as a, CASE WHEN a = 'test' THEN 'yes' END as value FROM table;

실제로 내 CASE 문이 프로그램 생성 될 수 있기 때문에 나는 별명에 열을 시도하고, 나는 경우 문을 사용하는 대신 프로그램에 다른 매개 변수를 전달해야하는 SQL에 지정 될 수있는 열을합니다.

해결법

  1. ==============================

    1.나는 그들이 WHERE 절에서 테이블의 컬럼과 CASE 절에 모든 열을 찾으려고하기 때문에 MySQL과 MSSQL이 허용하지 않습니다 생각합니다.

    나는 그들이 WHERE 절에서 테이블의 컬럼과 CASE 절에 모든 열을 찾으려고하기 때문에 MySQL과 MSSQL이 허용하지 않습니다 생각합니다.

    나는 당신이 무엇에 관해 얘기하는지 DBMS 모르겠지만, 나는 당신이 어떤 DBMS에서 이런 일을 할 수있는 것 같아요 :

    SELECT *, CASE WHEN a = 'test' THEN 'yes' END as value FROM (
       SELECT col1 as a FROM table
    ) q
    
  2. ==============================

    2.이:

    이:

    SELECT col1 as a,
           CASE WHEN a = 'test' THEN 'yes' END as value 
      FROM table;
    

    ...작동 안 할 것이다. 이 뜻 :

    SELECT CASE WHEN a = 'test' THEN 'yes' END as value
      FROM (SELECT col1 AS a
              FROM TABLE)
    

    왜 사용하지 것이다 :

    SELECT t.col1 as a,
           CASE WHEN t.col1 = 'test' THEN 'yes' END as value 
      FROM TABLE t;
    

    ... 나도 몰라.

  3. ==============================

    3.@OMG 조랑말 - 다음 코드를 사용하지 않는 나의 이유 중 하나

    @OMG 조랑말 - 다음 코드를 사용하지 않는 나의 이유 중 하나

    SELECT t.col1 as a, 
         CASE WHEN t.col1 = 'test' THEN 'yes' END as value 
    FROM TABLE t;
    

    t.col1 테이블의 실제 항목이 아니라고 할 수있다. 예를 들어, 같은 XML 열에서 값이 될 수 있습니다

    Select XMLColumnName.value('(XMLPathOfTag)[1]', 'varchar(max)') 
    as XMLTagAlias from Table
    
  4. ==============================

    4.그것은 작동합니다. 이 시도

    그것은 작동합니다. 이 시도

    Select * from
                  (select col1, col2, case when 1=1 then 'ok' end as alias_col
                   from table)
            as tmp_table
    order by 
           case when @sortBy  = 1 then tmp_table.alias_col end asc
    
  5. ==============================

    5.나는 도움말 작성 복잡한 SQL 쿼리에 열팽창 계수를 사용하지만 모든 RDBMS '지원 그들. 당신은 쿼리 범위보기로 생각할 수 있습니다. 여기에 SQL 서버에서 T-SQL의 예입니다.

    나는 도움말 작성 복잡한 SQL 쿼리에 열팽창 계수를 사용하지만 모든 RDBMS '지원 그들. 당신은 쿼리 범위보기로 생각할 수 있습니다. 여기에 SQL 서버에서 T-SQL의 예입니다.

    With localView1 as (
     select c1,
            c2,
            c3,
            c4,
            ((c2-c4)*(3))+c1 as "complex"
       from realTable1) 
       , localView2 as (
     select case complex WHEN 0 THEN 'Empty' ELSE 'Not Empty' end as formula1,
            complex * complex as formula2    
       from localView1)
    select *
    from localView2
    
  6. ==============================

    6.아니 MySQL을한다. 나는 그것을 시도하고 나는 다음과 같은 오류가 발생합니다 :

    아니 MySQL을한다. 나는 그것을 시도하고 나는 다음과 같은 오류가 발생합니다 :

    ERROR 1054 (42S22): Unknown column 'a' in 'field list'
  7. ==============================

    7.아니다 MSSQL에서

    아니다 MSSQL에서

    SELECT col1 AS o, e = CASE WHEN o < GETDATE() THEN o ELSE GETDATE() END 
    FROM Table1
    

    보고:

    Msg 207, Level 16, State 3, Line 1
    Invalid column name 'o'.
    Msg 207, Level 16, State 3, Line 1
    Invalid column name 'o'.
    

    내가 CASE COL1로 변경 그러나 경우에 ... THEN 작동 COL1

  8. ==============================

    8.TABLENAME에서

    TABLENAME에서

    감사 Mr.Buntha 킨

  9. ==============================

    9.

    SELECT
        a AS [blabla a],
        b [blabla b],
        CASE c
            WHEN 1 THEN 'aaa'
            WHEN 2 THEN 'bbb'
            ELSE 'unknown' 
        END AS [my alias], 
        d AS [blabla d]
    FROM mytable
    
  10. ==============================

    10.MySQL의에서, 앨리스 이름이없는 작업, 따라서 CASE 문에 원래 열 이름을 넣을 수 있습니다

    MySQL의에서, 앨리스 이름이없는 작업, 따라서 CASE 문에 원래 열 이름을 넣을 수 있습니다

     SELECT col1 as a, CASE WHEN col1 = 'test' THEN 'yes' END as value FROM table;
    

    (내 두 개의 서로 다른 개발 컴퓨터에서이 문제를 직면하게) 왜 때때로 위의 질의는 오류를 반환 할 수 있습니다, 난 모르겠어요. 따라서에 CASE 문을 넣어 "(...)"아래로 :

    SELECT col1 as a, (CASE WHEN col1 = 'test' THEN 'yes' END) as value FROM table;
    
  11. ==============================

    11.너무 쉽게.

    너무 쉽게.

    select columnnameshow = (CASE tipoventa
    when 'CONTADO' then 'contadito'
    when 'CREDITO' then 'cred'
    else 'no result'
    end) from Promocion.Promocion 
    
  12. from https://stackoverflow.com/questions/1583609/sql-alias-column-name-for-use-in-case-statement by cc-by-sa and MIT license