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