1

我正在编写一个 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>为每个使用一个?

4

2 回答 2

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 的答案使用较少的代码,并且可以由您的 SQL 引擎更有效地处理,但是并不能完全返回具有您想要的架构的结果集。

于 2013-04-29T09:20:38.213 回答
1
select  id
,       count (itn)
from    tTable 
where   userGUID = #Query.guid#
        and id in ('00101', '00201', '00301')
group by
        id
于 2013-04-29T09:14:15.180 回答