从多个行中选择多个列并返回总计数的行

时间:2011-09-16 11:18:42

标签: mysql sql select join

好的,这有点难以解释,我会尽我所能,如果你不理解我,欢迎你提问。

我有一张这样的桌子:

TITLE | BRANCH | BRANCH1 | BRANCH2 | BRANCH3

BRANCH(其中任何一个)可能包含“银行”,“信用”等等

我想要做的是返回具有不同分支和计数的行,其中标题等于“xxx”

类似的东西:

BANK | xxx Results

CREDIT | xxx Results 等等。

1 个答案:

答案 0 :(得分:0)

如果您无法更改表格以符合1FN,则可以开始使用以下内容

  • UNPIVOT使用UNION ALL的列为您提供符合1FN的结果集。
  • 将其设为子选择
  • 从此子选项中TITLE过滤
  • GROUP BYCOUNT结果

SQL语句

SELECT  BRANCH, COUNT(*)
FROM    (
          SELECT TITLE, BRANCH FROM MyTable 
          UNION ALL SELECT TITLE, BRANCH1 FROM MyTable 
          UNION ALL SELECT TITLE, BRANCH2 FROM MyTable 
          UNION ALL SELECT TITLE, BRANCH3 FROM MyTable 
        ) q
WHERE   TITLE = 'ATitle'        
GROUP BY
        BRANCH