SELECT t.* from (
(SELECT COUNT() AS isuser FROM dbo.[User] WHERE PhoneNumber='13321177023')
UNION ALL
(SELECT COUNT()AS isvipuser FROM dbo.VipUser WHERE Phone='13321177023')
UNION ALL
(SELECT COUNT(*) AS isAcadeuser FROM dbo.AcademyUserInfo WHERE PhoneNumber='13321177023')
) t

如何将多个select语句通过union all连接查询出的结果横向展示
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- Java大魔王 2022-10-10 17:44关注
给每一个查询都加一个标识1,然后根据这个表示聚合后,取个max就相当于行转列了
select max(isuser) as isuser, max(isvipuser ) as isvipuser, max(isAcadeuser ) as isAcadeuser from( SELECT t.* from ( (SELECT 1 as flag, COUNT() AS isuser FROM dbo.[User] WHERE PhoneNumber='13321177023') UNION ALL (SELECT 1 as flag, COUNT()AS isvipuser FROM dbo.VipUser WHERE Phone='13321177023') UNION ALL (SELECT 1 as flag, COUNT(*) AS isAcadeuser FROM dbo.AcademyUserInfo WHERE PhoneNumber='13321177023') ) t )tt group by tt.flag
解决 无用评论 打赏 举报 编辑记录