Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 在SQL Server 2005中使用多个计数_Sql Server 2005_Tsql_Count - Fatal编程技术网

Sql server 2005 在SQL Server 2005中使用多个计数

Sql server 2005 在SQL Server 2005中使用多个计数,sql-server-2005,tsql,count,Sql Server 2005,Tsql,Count,此查询将返回: select p.intprojectid, p.vcprojectname, md.intmoduleid, md.vcmodulename, md.intscreensfunc, md.vcname from projects as p left join (select m.intprojectid, m.intmoduleid, m.vcmodulename, s.intscreensfunc, s.vcname

此查询将返回:

select p.intprojectid, p.vcprojectname, md.intmoduleid, 
       md.vcmodulename, md.intscreensfunc, md.vcname 
from projects as p 
left join (select m.intprojectid, m.intmoduleid, m.vcmodulename, 
                  s.intscreensfunc, s.vcname 
           from modules as m 
           left join screens_func as s on m.intmoduleid = s.intmoduleid) md 
           on p.intprojectid = md.intprojectid
现在我想计算project-1中mod name的数量和screen-name的数量。i、 我希望查询返回

no |project-name|mod-id|mod-name  |  screen-id   |  screen-name
----------------------------------------------------------------
2   Project-1     4      mod-1          11            scr1
2   Project-1     4      mod-1          12            scr2
2   Project-1     4      mod-1          13            scr3
2   Project-1     4      mod-1          14            scr4
2   Project-1     8     Module-2       NULL           NULL

返回多个计数绝对是可能的

换句话说,您的查询可以修改如下:

project-name     no.of.mod          no.of.screen
------------------------------------------------
Project-1          2                    4
根据您的示例数据,我推断模块和屏幕之间存在一对多关系,因此您希望模块的计数
不同
,但屏幕不需要相同的要求(因为一个屏幕似乎不会在给定模块中多次出现)如果不是这样,您还可以将
distinct
添加到屏幕计数中

select p.vcprojectname, COUNT(DISTINCT md.intmoduleid) as no.of.mod, COUNT(md.intscreensfunc) as no.of.screen
from projects as p 
    left join (select m.intprojectid, m.intmoduleid, m.vcmodulename, s.intscreensfunc, s.vcname 
               from modules as m 
               left join screens_func as s 
                        on m.intmoduleid=s.intmoduleid)md 
           on p.intprojectid=md.intprojectid
GROUP BY p.vcprojectname