나는값에 따라 반환되는 열을 어떻게 제한 할 수 있습니까?
index customer_number ABC CWD ROE BEE
1 1 0 0 0 1
과 같은 테이블을 가지고 있고,이 경우에는 'BEE'
내가 SHOW FIELDS
에 의해 내가 이름을 얻을 수 있다는 것을 발견을 값 1에만 필드 이름을 반환하려면 필드는 어떻게 표시합니까? 필드 값 = 1 인 필드 이름을 표시하는 방법은 무엇입니까?
나는값에 따라 반환되는 열을 어떻게 제한 할 수 있습니까?
index customer_number ABC CWD ROE BEE
1 1 0 0 0 1
과 같은 테이블을 가지고 있고,이 경우에는 'BEE'
내가 SHOW FIELDS
에 의해 내가 이름을 얻을 수 있다는 것을 발견을 값 1에만 필드 이름을 반환하려면 필드는 어떻게 표시합니까? 필드 값 = 1 인 필드 이름을 표시하는 방법은 무엇입니까?
일반적인 방법으로는이 작업을 수행 할 수 없습니다.
select index, customer_number, decode (ABC, 1, "ABC", null) || decode (CWD, 1, "CWD", null) || decode (ROE, 1, "ROE", null) || decode (BEE, 1, "BEE", null) from aTable
그것은 값이 하나에 해당 각 항목에 대한 열 이름을 표시합니다
은 당신이 할 수있는 것은이 같은 SQL 문을 작성합니다. 오라클 SQL이므로 다른 rdbms를 사용하면 구문이 달라집니다.
답을 맞추기 위해 CASE 문을 사용하는 것이 각 열에 하나씩 있습니다. 예 :
SELECT CASE WHEN index=1 THEN "index" ELSE "no_index" END as i,
CASE WHEN customer=1 THEN "customer" ELSE "no_customer" END as c,
CASE WHEN ...
여기에 CASE 문을 사용합니다.
SELECT
index, customer_number,
CASE
WHEN abc=0 THEN 'abc'
WHEN cwd=0 THEN 'cwd'
END
FROM
table_name
이것은 SQL이 실제로 의도 한 것이 아니며 응용 프로그램 논리를 사용하는 것이 좋습니다.
말했다 즉, 당신은 아마 임시 테이블과 SPROC을 포함해야합니다.
몇 줄의 응용 프로그램 코드 만 바꾸면 엄청난 혼란을 겪을 수 있습니다. 아마도 그만한 가치는 없습니다.
동료들은 SQL 논리가 아닌 응용 프로그램 논리를 사용하여이 방법을 시도하는 것이 나에게 똑같다고 말했습니다. –
+1 코드의 과다없이 할 수 있는지 궁금 해서요. – Mayo
그건 SQL이하는 것이 아닙니다. 직업에 대한 잘못된 도구. – skaffman
'은 MySQL을 사용하는 것이 수치 스럽거나 SQL Server에서 pivot/unpivot 연산자를 사용할 수있었습니다. 그러나 진지하게, 왜 당신은 데이터베이스 측에서 이것을하고 싶습니까? – Eric