[英]Convert rows into columns in sub-query
我试图在像这样的子查询查询中将行转换为列时:
select distinct
bqtID, bqtName, bqtCity, bqtStatus, bqtManagerName,
(select
max(case when serName = 'Capacity' then serStatus end) Capacity,
max(case when serName = 'Parking' then serStatus end) Parking
from
tblService
where
serBqtID = bqtID),
from
View_BanquetList
where
bqtID = 1
我收到此错误:
如果未使用EXISTS引入子查询,则只能在选择列表中指定一个表达式。
当我单独使用它时,它可以工作:
select
max(case when serName = 'Capacity' then serStatus end) Capacity,
max(case when serName = 'Parking' then serStatus end) Parking
from
tblService
where
serBqtID = 1
结果:
Capacity Parking
-------- -------
101-200 51-100
为什么不将多行转换为子查询中的列?
您试图将两列作为选择列表中的一列返回。 那不行 我不是SQL Server方面的专家,但是使用Oracle至少会有三个选择。
我认为所有人也应该与SQL Server一起使用。 选项3与您现在拥有的最接近。
编辑:试试这个:
select distinct
v.bqtID, v.bqtName, v.bqtCity, v.bqtStatus, v.bqtManagerName,
t.Capacity, t.Parking
from
(select
serBqtID,
max(case when serName = 'Capacity' then serStatus end) Capacity,
max(case when serName = 'Parking' then serStatus end) Parking
from
tblService
group by
serBqtID) t
inner join
View_BanquetList v on t.serBqtID = v.bqtID
where
v.bqtID = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.