Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 中的PIVOT函数返回所有零_Sql_Sql Server_Tsql_Count_Pivot - Fatal编程技术网

Sql 中的PIVOT函数返回所有零

Sql 中的PIVOT函数返回所有零,sql,sql-server,tsql,count,pivot,Sql,Sql Server,Tsql,Count,Pivot,我有一张如下表: TestCaseID | currentResultVerdict 1 Passed 2 Failed 3 Blocked 4 Blocked 5 Inprogress 6 Passed 7 Passed se

我有一张如下表:

TestCaseID  |  currentResultVerdict
    1                Passed
    2                Failed
    3                Blocked
    4                Blocked
    5                Inprogress
    6                Passed
    7                Passed
select  *
from
(select TestCaseID, currentResultVerdict from R_4_TestCases) As SourceTable
PIVOT
(
count(TestCaseID)
for currentResultVerdict in (['Passed'],['Failed'],['Blocked'],['Inprogress'])
) As PivotTabe
我想产生如下结果:

Passed | Failed | Blocked | Inprogress
  3         1        2          1
我使用了
PIVOT
查询,如下所示:

TestCaseID  |  currentResultVerdict
    1                Passed
    2                Failed
    3                Blocked
    4                Blocked
    5                Inprogress
    6                Passed
    7                Passed
select  *
from
(select TestCaseID, currentResultVerdict from R_4_TestCases) As SourceTable
PIVOT
(
count(TestCaseID)
for currentResultVerdict in (['Passed'],['Failed'],['Blocked'],['Inprogress'])
) As PivotTabe
我的输出是:

'Passed' | 'Failed' | 'Blocked' | 'Inprogress'
  0           0          0            0
为什么我得到零


为了便于阅读,我没有在我的表中包括其他列

作为
pivot
的替代方法。您可以通过条件聚合获得相同的结果:

declare @tmp table (TestCaseID  int,  currentResultVerdict varchar(50))
insert into @tmp
values
 (1, 'Passed')
,(2, 'Failed')
,(3, 'Blocked')
,(4, 'Blocked')
,(5, 'Inprogress')
,(6, 'Passed')
,(7, 'Passed')

select 
     sum (case when currentResultVerdict='Passed'     then 1 else 0 end) as Passed
    ,sum (case when currentResultVerdict='Failed'     then 1 else 0 end) as Failed
    ,sum (case when currentResultVerdict='Blocked'    then 1 else 0 end) as Blocked
    ,sum (case when currentResultVerdict='Inprogress' then 1 else 0 end) as Inprogress
from @tmp
结果:


作为
pivot
的替代方案,您可以通过条件聚合实现相同的结果:

declare @tmp table (TestCaseID  int,  currentResultVerdict varchar(50))
insert into @tmp
values
 (1, 'Passed')
,(2, 'Failed')
,(3, 'Blocked')
,(4, 'Blocked')
,(5, 'Inprogress')
,(6, 'Passed')
,(7, 'Passed')

select 
     sum (case when currentResultVerdict='Passed'     then 1 else 0 end) as Passed
    ,sum (case when currentResultVerdict='Failed'     then 1 else 0 end) as Failed
    ,sum (case when currentResultVerdict='Blocked'    then 1 else 0 end) as Blocked
    ,sum (case when currentResultVerdict='Inprogress' then 1 else 0 end) as Inprogress
from @tmp
结果:


方括号内不应包含单引号。应该是这样的<代码>['Passed']将匹配以单个字符开头和结尾的字符串quote@MartinSmith就这样!。谢谢你的帮助。删除单引号将返回所需结果。不应将单引号包含在方括号内。应该是这样的<代码>['Passed']将匹配以单个字符开头和结尾的字符串quote@MartinSmith就这样!。谢谢你的帮助。删除单引号现在会返回所需的结果。