需要:用于重新分类输出的复杂SQL查询

时间:2018-07-25 22:05:13

标签: mysql sql

我需要帮助来创建一个以特定格式输出数据的SQL查询。

假设我有两个表,数据如下所示:

表1:

Name    
A       
B       
C       

表2:

Name        Address          Category
A           123 One St.      Type1
A           123 One St.      Type1
A           123 One St.      Type1
A           123 One St.      Type2
B           222 Two St.      Type2
B           222 Two St.      Type2
C           77 Three St.     Type1
C           77 Three St.     Type3
C           77 Three St.     Type3

我需要以以下格式生成输出:

Name        Address        Type1   Type2  Type3
A           123 One St.    TRUE    TRUE   FALSE
B           222 Two St.    FALSE   TRUE   FALSE
C           77 Three St.   TRUE    FALSE  TRUE

我似乎无法弄清楚。任何帮助将不胜感激!

我的尝试只有一部分:

    select t1.Name, Category="Type1" as Type1, Category="Type2" as Type2,
           Category="Type3" as Type3
    from Table2 t1
    order by Name

这远没有达到目标。

1 个答案:

答案 0 :(得分:0)

似乎您正在寻找条件聚合和内部联接。

SELECT t2.name,
       t2.address,
       CASE
         WHEN count(CASE t2.category
                      WHEN 'Type1' THEN
                        1
                    END) > 0 THEN
           'TRUE'
         ELSE
           'FALSE'
       END type1,
       CASE
         WHEN count(CASE t2.category
                      WHEN 'Type2' THEN
                        1
                    END) > 0 THEN
           'TRUE'
         ELSE
           'FALSE'
       END type2,
       CASE
         WHEN count(CASE t2.category
                      WHEN 'Type3' THEN
                        1
                    END) > 0 THEN
           'TRUE'
         ELSE
           'FALSE'
       END type3
     FROM table1 t1
          INNER JOIN table2 t2
                     ON t2.name = t1.name
     GROUP BY t2.name,
              t2.address;