SQL查询结果为多行按照列的条件显示合并成一行

时间:2021-10-31 03:48:57
请各位帮忙
表名:UTable
表结构:
UID Udept   Uname    P01     P02     P03
表内容:
UID   Udept    Uname    P01        P02       P03
1        代理部   策划组       OK          OK       
2        代理部   策划组       OK                       OK
3        代理部   策划组       OK                   

4        代理部   宣传组       OK          OK        
5        代理部   宣传组       OK                   
6        代理部   宣传组                      

希望得到查询结果
Udept   Uname     P01   P02    P03  
代理部  策划组       OK     OK     OK
代理部  宣传组       OK     OK          

说明:根据Udept,Uname分类,通过查询显示"P01","P02","P03",三个字段中任何一组有"OK"的时候,显示内容为 "OK"(字段内的值),然后合并显示至同一行。
不知道这样描述是否清楚,希望还有人未睡觉。
最好能用sql语句实现.
先感谢
为什么只能有100分

4 个解决方案

#1



SELECT Udept, Uname, CASE WHEN SUM(CASE WHEN P01='OK' THEN 1 ELSE 0 END)>1 THEN 'OK' ELSE '' END AS P01, CASE WHEN SUM(CASE WHEN P02='OK' THEN 1 ELSE 0 END)>1 THEN 'OK' ELSE '' END AS P02, CASE WHEN SUM(CASE WHEN P03='OK' THEN 1 ELSE 0 END)>1 THEN 'OK' ELSE '' END AS P03
FROM UTable GROUP BY Udept, Uname 

#2


灰常感谢,测试一下

#3


牛,只是少了一个">="号,可能是说明不清楚,换成access里Iif测试通过,感谢!

#4


终于可以睡觉了

#1



SELECT Udept, Uname, CASE WHEN SUM(CASE WHEN P01='OK' THEN 1 ELSE 0 END)>1 THEN 'OK' ELSE '' END AS P01, CASE WHEN SUM(CASE WHEN P02='OK' THEN 1 ELSE 0 END)>1 THEN 'OK' ELSE '' END AS P02, CASE WHEN SUM(CASE WHEN P03='OK' THEN 1 ELSE 0 END)>1 THEN 'OK' ELSE '' END AS P03
FROM UTable GROUP BY Udept, Uname 

#2


灰常感谢,测试一下

#3


牛,只是少了一个">="号,可能是说明不清楚,换成access里Iif测试通过,感谢!

#4


终于可以睡觉了