Home > Database > Mysql Tutorial > How to Transpose Latest Email Addresses into Columns for User Queries Using SQL?

How to Transpose Latest Email Addresses into Columns for User Queries Using SQL?

DDD
Release: 2025-01-10 16:16:42
Original
278 people have browsed it

How to Transpose Latest Email Addresses into Columns for User Queries Using SQL?

Transpose latest email address into column for user query

In database management, it is often necessary to convert data from its initial form into a format that facilitates efficient analysis and retrieval. One of these transformations involves transposing rows of multiple email addresses associated with a user into columns. This allows extracting the latest available email address for each user based on specific criteria (such as creation date).

To achieve this conversion, you can use the tablefunc function in the crosstab() module. The following SQL query demonstrates how to use crosstab() to transpose the last three email addresses of each user:

<code class="language-sql">SELECT * FROM crosstab(
   $$SELECT user_id, user_name, rn, email_address
     FROM  (
        SELECT u.user_id, u.user_name, e.email_address
             , row_number() OVER (PARTITION BY u.user_id
                            ORDER BY e.creation_date DESC NULLS LAST) AS rn
        FROM   usr u
        LEFT   JOIN email_tbl e USING (user_id)
        ) sub
     WHERE  rn < 4
     ORDER  BY user_id
   $$
  , 'VALUES (1),(2),(3)'
   ) AS t (user_id int, user_name text, email1 text, email2 text, email3 text);</code>
Copy after login

In this query, the subquery calculates the row number for each email address, separated by user_id, and sorted in descending order based on creation_date. The NULLS LAST clause ensures that null values ​​are treated as the lowest ranked value. The generated rn line numbers are then used to limit each user's selection to the first three email addresses.

The

crosstab() function takes two parameters: the query string (defining the data source) and the key value to be used as the column transpose. In this example, the query string retrieves relevant data from the usr and email_tbl tables, and the second parameter specifies the value (1),(2),(3), corresponding to the three columns email1, email2, and email3.

The output of the

query is a table containing user_id, user_name, and the three most recent email addresses for each user, transposed into separate columns. This transformation simplifies the retrieval of each user's latest available email address, allowing for efficient data analysis and communication.

The above is the detailed content of How to Transpose Latest Email Addresses into Columns for User Queries Using SQL?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template