Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
统计ms sql中select的修改结果_Sql_Sql Server - Fatal编程技术网

统计ms sql中select的修改结果

统计ms sql中select的修改结果,sql,sql-server,Sql,Sql Server,我想根据返回的2个字段对select的结果进行计数,并使用GROUPBY子句进行计数。尽管我使用substring和patindex修改了其中一个返回字段,以获得结果中冒号后面的所有内容,因此我最终得到了一个包含单词“paper”或“online”的列。我想计算论文和在线结果的数量,但我得到的结果是基于字段的原始内容进行计算的,而不是基于我修改的内容。这就是我现在正在做的: select field1, field2, case when substring(field3, pa

我想根据返回的2个字段对select的结果进行计数,并使用GROUPBY子句进行计数。尽管我使用substring和patindex修改了其中一个返回字段,以获得结果中冒号后面的所有内容,因此我最终得到了一个包含单词“paper”或“online”的列。我想计算论文和在线结果的数量,但我得到的结果是基于字段的原始内容进行计算的,而不是基于我修改的内容。这就是我现在正在做的:

select field1, field2, 
       case when substring(field3, patindex('%:%',field3)+1, 6) = 'Paper' then 'paper' 
   else 'online' end, count(field3) 'Count'
from theTable
group by field2, field1, field3
order by field2, field1
我还尝试:

select field1, field2, 
       count(case when substring(field3, patindex('%:%',field3)+1, 6) = 'Paper' then 'paper' 
   else 'online' end) 'Count'
from theTable
group by field2, field1, field3
order by field2, field1

我需要做什么才能得到我想要的计数?

计数多少取决于
分组依据。因此,您需要GROUPBY子句中的逻辑:

select field1, field2, 
   case when substring(field3, patindex('%:%',field3)+1, 6) = 'Paper'
       then 'paper'  else 'online' end 'Type', count(field3) 'Count'
from theTable
group by field2, field1, case when substring(field3,
       patindex('%:%',field3)+1, 6) = 'Paper' then 'paper'  else 'online' end
order by field2, field1
演示:

选择字段1,
字段2,
总和(子字符串(字段3,patindex(“%:%”,字段3)+1,6)=“纸张”时的情况)
那么1
其他0
(完)总论文,,
总和(子字符串(字段3,patindex(“%:%”,字段3)+1,6)“纸张”时的大小写)
那么1
其他0
(完)全网,,
计数(字段3)总计计数
从表格
按字段2分组,字段1分组
按字段2、字段1排序

小提琴链接的功劳<代码>:D

您是如何修改字段的?是否使用更新和/或插入?
SELECT  field1,
        field2,
        SUM(CASE WHEN substring(field3, patindex('%:%', field3) + 1, 6) = 'Paper'
                THEN 1
                ELSE 0
        END) totalPaper,
        SUM(CASE WHEN substring(field3, patindex('%:%', field3) + 1, 6) <> 'Paper'
                THEN 1
                ELSE 0
        END) totalOnline,
        count(field3) TotalCount
FROM    theTable
GROUP   BY field2, field1
ORDER   BY field2, field1