복붙노트

[SQL] PostgreSQL의 행에 대한 열 헤더 전치

SQL

PostgreSQL의 행에 대한 열 헤더 전치

나는이 보이는 전망을

          value1count     value2count value3count
          ----------------------------------------
             25              35          55

나는 행에 열 머리글을 전치 할 필요가 내가 필요 그래서처럼 보이도록

          Values              Count
         -----------------------------
           value1count         25
           value2count         35
           value3count         55

I 번째 열과 제 열과 개별 데이터 열 이름을 선택하여이를 수행하고 모든 열에 대해 동일한 한 조합 할 수있다.

이 작업을 수행하는 더 좋은 방법이 있나요? 나는 PostgreSQL을 8.1을 사용하고 그래서 작업을하려면 피벗 사업자가 없습니다.

사전에 응답을 주셔서 감사합니다.

해결법

  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. ==============================

    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. ==============================

    3.좀 더 쉽게 bash는 스크립트에서 테이블 정보를 처리하기 위해 다음과 유사한 뭔가를 찾고 있었다. 매우 쉽게 행으로 표시 테이블 컬럼에 psql를 말할 것으로 밝혀졌습니다 :

    좀 더 쉽게 bash는 스크립트에서 테이블 정보를 처리하기 위해 다음과 유사한 뭔가를 찾고 있었다. 매우 쉽게 행으로 표시 테이블 컬럼에 psql를 말할 것으로 밝혀졌습니다 :

    psql mydbname -x -A -F= -c "select * from blah where id=123"
    

    SQL에서이 과정의 작동 실 거예요, 그것은 psql의 포맷 출력에 발생하는 경우에만 수정 방법에 대해 설명합니다.

  4. ==============================

    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. ==============================

    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 뉴욕 자동차이었다.

  6. from https://stackoverflow.com/questions/10624864/transpose-column-headers-to-rows-in-postgresql by cc-by-sa and MIT license