찾다

 >  Q&A  >  본문

MySQL에서 피벗 테이블의 출력을 어떻게 반환합니까?

<p>다음과 같은 MySQL 테이블이 있는 경우:</p> <사전>company_name 작업 페이지 수 ---------------------------------- A사 인쇄 3 A사 인쇄 2 A사 인쇄 3 회사 비메일 B사 PRINT 2 B사 PRINT 2 B사 인쇄 1 A사 인쇄 3 </pre> <p>MySQL 쿼리를 실행하여 다음 출력을 얻을 수 있나요?</p>
company_name 이메일 1페이지 인쇄 2페이지 인쇄 3페이지 인쇄
------------------------------------- ----------
A사 0 0 1 3
B사 1 1 2 0
</pre>
<p>페이지 수는 다양할 수 있으므로 출력의 열 수는 각 작업/페이지 수에 대해 하나의 열을 사용하여 이를 반영한 ​​다음 각 회사 이름에 대한 클릭 수를 계산해야 한다는 것입니다. 이것이 피벗 테이블이라고 불리는지 확실하지 않지만 누군가 이것을 제안했습니다. </p>
P粉578343994P粉578343994497일 전514

모든 응답(2)나는 대답할 것이다

  • P粉461599845

    P粉4615998452023-07-26 12:06:35

    내 솔루션은 피벗 테이블 대신 T-SQL을 사용하는 것입니다.

    으아아아

    회신하다
    0
  • P粉574268989

    P粉5742689892023-07-26 00:37:24

    이것은 기본적으로 피벗 테이블입니다.

    이를 구현하는 방법에 대한 자세한 튜토리얼은 여기에서 찾을 수 있습니다: http://www.artfulsoftware.com/infotree/qrytip.php?id=78

    이 기사를 읽고 자신의 필요에 맞게 적용하는 것이 좋습니다.

    UPDATE

    위의 링크는 현재 더 이상 사용할 수 없으므로 여기에서 MySQL 피벗 테이블에 대한 답변을 찾는 모든 사람에게 추가 정보를 제공해야 한다고 느꼈습니다. 이 링크에는 정말 많은 정보가 있습니다. 모든 정보를 복사하지는 않겠습니다(그리고 그들의 풍부한 지식을 복사하고 싶지도 않습니다). 그러나 SQL에서 피벗 테이블을 사용하여 작업하는 방법에 대한 몇 가지 조언을 제공하겠습니다. peku 제기된 질문을 예로 들어보겠습니다.

    곧 링크가 복구될 수도 있으니, 지켜보도록 하겠습니다.

    스프레드시트 방식...

    많은 사람들이 이 작업을 수행하기 위해 MSExcel, OpenOffice 또는 기타 스프레드시트 도구와 같은 도구를 사용합니다. 이것은 유효한 솔루션입니다. 데이터를 거기에 복사하고 GUI에서 제공하는 도구를 사용하여 문제를 해결하십시오.

    하지만...이것은 문제의 핵심이 아니며 데이터를 스프레드시트로 가져오는 방법, 확장성 문제 등과 같은 몇 가지 단점으로 이어질 수도 있습니다.

    SQL 방식...

    그의 테이블이 다음과 같다고 가정해 보겠습니다.


    으아아아

    이제 기대치 표를 살펴보세요:

    으아아아

    라인(이메일, 인쇄 x 페이지)은 조건과 같습니다. 주요 그룹화는 회사 이름별로 이루어집니다.

    조건을 설정하려면 CASE 문을 사용하는 것이 더 적합합니다. 어떤 항목으로 그룹화하려면 GROUP BY를 사용할 수 있습니다.

    이 피벗 테이블을 제공하는 기본 SQL 문은 다음과 같습니다.


    으아아아

    이렇게 하면 원하는 결과가 매우 빠르게 제공됩니다. 이 접근 방식의 가장 큰 단점은 피벗 테이블에 더 많은 행을 포함할수록 SQL 문에 정의해야 하는 조건이 더 많아진다는 것입니다.

    이 문제도 해결 가능하므로 사람들은 준비된 명령문, 루틴, 카운터 등을 사용하는 경향이 있습니다.

    다음은 이 주제에 대한 추가 링크입니다:


    회신하다
    0
  • 취소회신하다