我正在编写一个ColdFusion页面来生成一个Excel表格,如下所示:
我想从数据库中的一个表生成多列信息。对于每一列,我实际上需要一个SELECT COUNT来获得结果。像这样;
Select count (yT) as pageOneView from tTable where userGUID=#Query.guid# AND id='00101'
Select count (yT) as pageTwoView from tTable where userGUID=#Query.guid# AND id='00201'
Select count (yT) as pageThreeView from tTable where userGUID=#Query.guid# AND id='00301'
请注意,更改的唯一细节是计数名称和ID。 如何将这些组合成一个<cfquery>
而不是每个<cfquery>
?
答案 0 :(得分:4)
编辑以回应评论
如果你只想显示一个“布尔”值,那么计算所有行的效率很低。
select
case when exists
(select * from tTable
where guid = #Query.guid#
and yT is not null
and id = '00101')
then 'True' else 'False' end pageOneView,
case when exists
(select * from tTable
where guid = #Query.guid#
and yT is not null
and id = '00201')
then 'True' else 'False' end pageTwoView,
case when exists
(select * from tTable
where guid = #Query.guid#
and yT is not null
and id = '00301')
then 'True' else 'False' end pageThreeView
select
count(case id when '00101' then yT end) pageOneView,
count(case id when '00201' then yT end) pageTwoView,
count(case id when '00301' then yT end) pageThreeView
from
tTable
where
userGUID = #Query.guid#;
请注意Andomar's answer使用较少的代码,并且可以由SQL引擎更有效地处理,但是,不要使用您想要的架构返回结果集。
答案 1 :(得分:1)
select id
, count (itn)
from tTable
where userGUID = #Query.guid#
and id in ('00101', '00201', '00301')
group by
id