Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

WikiQuora

WikiQuora Logo WikiQuora Logo

WikiQuora Navigation

Search
Ask A Question

Mobile menu

Close
Ask A Question
  • Home
  • Add group
  • Feed
  • User Profile
  • Communities
  • Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
Home/pivot-table

WikiQuora Latest Questions

W3spoint99
  • 0
W3spoint99Begginer
Asked: December 25, 2024In: MySQL

How to create pivot table in mysql?

  • 0

If I have a MySQL table looking something like this: company_name action pagecount Company A PRINT 3 Company A PRINT 2 Company A PRINT 3 Company ...

mysqlpivotpivot-tablesqltable
  1. Saralyn
    Saralyn Teacher
    Added an answer on December 25, 2024 at 10:21 am

    Many people just use a tool like MSExcel, OpenOffice or other spreadsheet-tools for this purpose. This is a valid solution, just copy the data over there and use the tools the GUI offer to solve this. But... this wasn't the question, and it might even lead to some disadvantages, like how to get theRead more

    Many people just use a tool like MSExcel, OpenOffice or other spreadsheet-tools for this purpose. This is a valid solution, just copy the data over there and use the tools the GUI offer to solve this.

    But… this wasn’t the question, and it might even lead to some disadvantages, like how to get the data into the spreadsheet, problematic scaling and so on.

    The SQL way…

    Given his table looks something like this:

    CREATE TABLE `test_pivot` (
      `pid` bigint(20) NOT NULL AUTO_INCREMENT,
      `company_name` varchar(32) DEFAULT NULL,
      `action` varchar(16) DEFAULT NULL,
      `pagecount` bigint(20) DEFAULT NULL,
      PRIMARY KEY (`pid`)
    ) ENGINE=MyISAM;
    

    Now look into his/her desired table:

    company_name    EMAIL   PRINT 1 pages   PRINT 2 pages   PRINT 3 pages
    -------------------------------------------------------------
    CompanyA        0       0               1               3
    CompanyB        1       1               2               0
    

    The rows (EMAIL, PRINT x pages) resemble conditions. The main grouping is by company_name.

    In order to set up the conditions this rather shouts for using the CASE-statement. In order to group by something, well, use … GROUP BY.

    The basic SQL providing this pivot can look something like this:

    SELECT  P.`company_name`,
        COUNT(
            CASE 
                WHEN P.`action`='EMAIL' 
                THEN 1 
                ELSE NULL 
            END
        ) AS 'EMAIL',
        COUNT(
            CASE 
                WHEN P.`action`='PRINT' AND P.`pagecount` = '1' 
                THEN P.`pagecount` 
                ELSE NULL 
            END
        ) AS 'PRINT 1 pages',
        COUNT(
            CASE 
                WHEN P.`action`='PRINT' AND P.`pagecount` = '2' 
                THEN P.`pagecount` 
                ELSE NULL 
            END
        ) AS 'PRINT 2 pages',
        COUNT(
            CASE 
                WHEN P.`action`='PRINT' AND P.`pagecount` = '3' 
                THEN P.`pagecount` 
                ELSE NULL 
            END
        ) AS 'PRINT 3 pages'
    FROM    test_pivot P
    GROUP BY P.`company_name`;
    

    This should provide the desired result very fast. The major downside for this approach, the more rows you want in your pivot table, the more conditions you need to define in your SQL statement.

    This can be dealt with, too, therefore people tend to use prepared statements, routines, counters and such.

    Some additional links about this topic:

    • http://anothermysqldba.blogspot.de/2013/06/pivot-tables-example-in-mysql.html
    • http://www.codeproject.com/Articles/363339/Cross-Tabulation-Pivot-Tables-with-MySQL
    • http://datacharmer.org/downloads/pivot_tables_mysql_5.pdf
    • https://codingsight.com/pivot-tables-in-mysql/
    See less
      • 0
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report
1
  • 1 1 Answer
  • 597 Views
Answer

Sidebar

Ask A Question
  • Popular
  • Answers
  • W3spoint99

    What is the difference between Promises and Observables?

    • 2 Answers
  • W3spoint99

    Can't bind to 'ngModel' since it isn't a known property ...

    • 2 Answers
  • W3spoint99

    How to prevent SQL injection in PHP?

    • 1 Answer
  • Saralyn
    Saralyn added an answer Learn Java if: ✅ You want to work on enterprise applications.… April 27, 2025 at 2:01 pm
  • Saralyn
    Saralyn added an answer AI is getting smarter, but replacing programmers entirely? That’s not… April 27, 2025 at 1:58 pm
  • Saralyn
    Saralyn added an answer Both Promises and Observables provide us with abstractions that help us deal with the asynchronous nature… January 17, 2025 at 2:03 pm

Trending Tags

AI angular application.properties arrays artificial intelligence coding how Java javascript machine learning mysql nullpointerexception php programmer python reactjs spring springboot sql string

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help

Footer

  • About US
  • Privacy Policy
  • Questions
  • Recent Questions
  • Web Stories

© 2025 WikiQuora.Com. All Rights Reserved