我为ssrs报告数据集编写了此查询。该报告适用于单个参数值,并且在为参数选择多个值时会填充错误。
@iteration是一个多值报告参数。
create table #hftable
( id int ,startdate datetime, environment nvarchar(50), iteration nvarchar(50))
insert #hgtable( id , startdate,environment , iteration)
select distinct wit.id, max(wit.startdate),environment , i.iteration
from Workers wit
join iteration i
on wit.sckid=i.sckid
and i.iterationlabel in (@iteration)
where system_rev =(SELECT MAX(system_rev) AS system_rev
FROM workers
WHERE system_id = wit.system_id)
group by wit.id, i.iteration,environment
order by i.iteration
select count(*) ,environment from #hftable
group by iteration,environment
order by iteration
答案 0 :(得分:2)
此错误与您在嵌套查询中返回太多列以查找相关值有关。例如,这是错误的:
SELECT *
FROM MyTable
WHERE SomeColumn = (SELECT MAX(ThisColumn), MAX(ThatColumn) FROM OtherTable)
嵌套查询必须只返回一列进行比较:
SELECT *
FROM MyTable
WHERE SomeColumn = (SELECT MAX(ThisColumn) FROM OtherTable)
您在显示的查询中没有此问题,但这是错误的含义。也许您的报告中还有另一个查询可以执行此操作吗?有时它采取订购的形式:
SELECT *
FROM MyTable
WHERE SomeColumn IN (
SELECT TOP 10 ThisColumn, COUNT(*)
FROM OtherTable
GROUP BY ThisColumn
ORDER BY COUNT(*) DESC
)
在这种情况下,您仍然可以执行所需的排序,而无需在嵌套查询的列列表中返回COUNT(*)
。