[SQL] PostgreSQL의 행에 대한 열 헤더 전치
SQLPostgreSQL의 행에 대한 열 헤더 전치
나는이 보이는 전망을
value1count value2count value3count
----------------------------------------
25 35 55
나는 행에 열 머리글을 전치 할 필요가 내가 필요 그래서처럼 보이도록
Values Count
-----------------------------
value1count 25
value2count 35
value3count 55
I 번째 열과 제 열과 개별 데이터 열 이름을 선택하여이를 수행하고 모든 열에 대해 동일한 한 조합 할 수있다.
이 작업을 수행하는 더 좋은 방법이 있나요? 나는 PostgreSQL을 8.1을 사용하고 그래서 작업을하려면 피벗 사업자가 없습니다.
사전에 응답을 주셔서 감사합니다.
해결법
-
==============================
1.크로스 탭은 당신이 필요로하는 무슨의 반대를 않습니다,하지만 당신을 도움이 될 것입니다 :
크로스 탭은 당신이 필요로하는 무슨의 반대를 않습니다,하지만 당신을 도움이 될 것입니다 :
우선 8.4에 포함 unnest () 함수를 작성 지시 여기 참조.
그럼 당신은 (이 게시물 기준)이 작업을 수행 할 수 있습니다
SELECT unnest(array['value1Count', 'value2Count', 'value3Count']) AS "Values", unnest(array[value1Count, value2Count, value3Count]) AS "Count" FROM view_name ORDER BY "Values"
나는 8.4에서이 작품,하지만 난 8.1이 없기 때문에, 내가 약속 할 수는 동일하게 작동하는지 확인 할 수 있습니다.
-
==============================
2.나는 hstore의 기능을 사용하여 목표를 달성 :
나는 hstore의 기능을 사용하여 목표를 달성 :
SELECT (x).key, (x).value FROM ( SELECT EACH(hstore(t)) as x FROM t ) q;
당신이 여러 행이있을 수 있습니다보기 또는 테이블, 당신은 예를 들어, 중간 테이블 Q에 추가 식별자를 삽입해야 할 수도 있습니다 (t 여기 함) "- 폭발 수에 -"
SELECT id, (x).key, (x).value FROM ( SELECT id, EACH(hstore(t)) as x FROM t ) q;
참조 : hstore 문서
-
==============================
3.좀 더 쉽게 bash는 스크립트에서 테이블 정보를 처리하기 위해 다음과 유사한 뭔가를 찾고 있었다. 매우 쉽게 행으로 표시 테이블 컬럼에 psql를 말할 것으로 밝혀졌습니다 :
좀 더 쉽게 bash는 스크립트에서 테이블 정보를 처리하기 위해 다음과 유사한 뭔가를 찾고 있었다. 매우 쉽게 행으로 표시 테이블 컬럼에 psql를 말할 것으로 밝혀졌습니다 :
psql mydbname -x -A -F= -c "select * from blah where id=123"
SQL에서이 과정의 작동 실 거예요, 그것은 psql의 포맷 출력에 발생하는 경우에만 수정 방법에 대해 설명합니다.
-
==============================
4.나는 비슷한 상황이 있었다. 나는 문을 사용하여 내 쿼리를 포장 한 후 각 행에 대해 UNION ALLS의 무리를했다. 나는 여러 레코드가 있다면 내가 나서서 내 결과 집합에 나의 열 목록에 추가 그래서 내 상황에서의 ncm_id는 다른 것입니다. 이이 작업을 수행하는 가장 좋은 방법은되지 않을 수도 있습니다,하지만 내 사용 사례 일했다.
나는 비슷한 상황이 있었다. 나는 문을 사용하여 내 쿼리를 포장 한 후 각 행에 대해 UNION ALLS의 무리를했다. 나는 여러 레코드가 있다면 내가 나서서 내 결과 집합에 나의 열 목록에 추가 그래서 내 상황에서의 ncm_id는 다른 것입니다. 이이 작업을 수행하는 가장 좋은 방법은되지 않을 수도 있습니다,하지만 내 사용 사례 일했다.
WITH query_a AS ( SELECT fin_item.item_number || ' - ' || fin_item.item_descrip1 fin_item, fin_ls.ls_number, ls_sort.sortby_employeeid, ls_sort.ncm_id, ls_sort.created_at, ls_sort.updated_at, ls_sort.sort_qty, ls_sort.initial_scan_time, ls_sort.ncm_scan_time, ls_sort.badge_scan_time, ls_sort.computer_name, ls_sort.number_of_ops, ls_sort.ncm_item_scan_time, sort_by.name sort_by, tblncm.instructions, tblncm.ncm_comments FROM public.item AS fin_item INNER JOIN public.ls AS fin_ls ON fin_item.item_id = fin_ls.ls_item_id INNER JOIN stone.ls_sort ON fin_ls.ls_id = ls_sort.ls_id INNER JOIN stone.vw_mssql_employees AS sort_by ON ls_sort.sortby_employeeid = sort_by.employeeid INNER JOIN stone.tblncm ON ls_sort.ncm_id = tblncm.ncm_id LEFT JOIN stone.equips AS mach_equips ON ls_sort.mach_equip_id = mach_equips.id LEFT JOIN stone.equips AS mold_equips ON ls_sort.mold_equip_id = mold_equips.id WHERE 1 = 1 AND fin_ls.ls_number ILIKE 'S143027526190' || '%' ) SELECT * FROM ( (SELECT 'fin_item' my_column, fin_item::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'ls_number' my_column, ls_number::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'sortby_employeeid' my_column, sortby_employeeid::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'ncm_id' my_column, ncm_id::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'created_at' my_column, created_at::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'updated_at' my_column, updated_at::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'sort_qty' my_column, sort_qty::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'initial_scan_time' my_column, initial_scan_time::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'ncm_scan_time' my_column, ncm_scan_time::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'badge_scan_time' my_column, badge_scan_time::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'computer_name' my_column, computer_name::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'number_of_ops' my_column, number_of_ops::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'ncm_item_scan_time' my_column, ncm_item_scan_time::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'sort_by' my_column, sort_by::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'instructions' my_column, instructions::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) UNION ALL (SELECT 'ncm_comments' my_column, ncm_comments::TEXT my_value, ncm_id::TEXT my_ncm FROM query_a) ) as query_guy ORDER BY my_ncm;
-
==============================
5.나는 이해하지 수 ...하지만 난이 있었다했던 방법은 다음 DISTINCT 선택 내가 필요한 평균 열 값을 선택할 수 있습니다. 이 같이 :
나는 이해하지 수 ...하지만 난이 있었다했던 방법은 다음 DISTINCT 선택 내가 필요한 평균 열 값을 선택할 수 있습니다. 이 같이 :
SELECT DISTINCT contributing_factor_vehicle_1, AVG(number_of_cyclist_injured) FROM "table1".motor_vehicle_collisions_crashes GROUP BY contributing_factor_vehicle_1 ORDER BY avg(number_of_cyclist_injured) desc
즉과 같이 뭔가를 만들어 무엇 :
이 충돌 데이터 BTW 뉴욕 자동차이었다.
from https://stackoverflow.com/questions/10624864/transpose-column-headers-to-rows-in-postgresql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 때 데이터베이스 트리거의 나쁜입니까? [복제] (0) | 2020.07.06 |
---|---|
[SQL] MySQL의 중첩 된 세트는 - 어떻게 노드의 부모를 찾는 방법은? (0) | 2020.07.06 |
[SQL] TRY의 CATCH 안에 단일 문에서 여러 오류 메시지를 캡처 (0) | 2020.07.05 |
[SQL] LIMIT & IN / ALL / ANY / SOME 서브 쿼리에 문제가 (0) | 2020.07.05 |
[SQL] 어떻게 SQL에 소수점을 계산합니까? (0) | 2020.07.05 |