你这个稍微有点麻烦,不过其实也简单。按你的意思,首先,要获得一个包含ABCDE全集的视图
作为基础,就是
select n1 as abcde from ta union select n2 from ta
union select n3 from ta union select n4 from ta
然后在这个视图上,LEFT JOIN 各个由例如
select n1,count(n1) from ta group by n1
的视图。完整的SQL语句如下:select a.abcde, b.n1count, c.n2count, d.n3count, e.n4count
from
(select n1 as abcde from ta union select n2 from ta
union select n3 from ta union select n4 from ta)
as a
left join (select n1, count(n1) as n1count from ta group by n1) as b on a.abcde=b.n1
left join (select n2, count(n2) as n2count from ta group by n2) as c on a.abcde=c.n2
left join (select n3, count(n3) as n3count from ta group by n3) as d on a.abcde=d.n3
left join (select n4, count(n4) as n4count from ta group by n4) as e on a.abcde=e.n4这样就可以了。
作为基础,就是
select n1 as abcde from ta union select n2 from ta
union select n3 from ta union select n4 from ta
然后在这个视图上,LEFT JOIN 各个由例如
select n1,count(n1) from ta group by n1
的视图。完整的SQL语句如下:select a.abcde, b.n1count, c.n2count, d.n3count, e.n4count
from
(select n1 as abcde from ta union select n2 from ta
union select n3 from ta union select n4 from ta)
as a
left join (select n1, count(n1) as n1count from ta group by n1) as b on a.abcde=b.n1
left join (select n2, count(n2) as n2count from ta group by n2) as c on a.abcde=c.n2
left join (select n3, count(n3) as n3count from ta group by n3) as d on a.abcde=d.n3
left join (select n4, count(n4) as n4count from ta group by n4) as e on a.abcde=e.n4这样就可以了。
from
(((((select n1 as abcde from ta union select n2 from ta
union select n3 from ta union select n4 from ta)
as a
left join (select n1, count(n1) as n1count from ta group by n1) as b on a.abcde=b.n1)
left join (select n2, count(n2) as n2count from ta group by n2) as c on a.abcde=c.n2)
left join (select n3, count(n3) as n3count from ta group by n3) as d on a.abcde=d.n3)
left join (select n4, count(n4) as n4count from ta group by n4) as e on a.abcde=e.n4)每一个LEFT JOIN都得加一层括号。已经调试通过了。
abcde n1count n2count n3count n4count
a 1 1
b 1 1
c 2 1
d 1 1 1
e 2