模式:SQL逗号分隔字符串总数
SubscriberId NewsletterIdCsv
------------ ---------------
1 48,51,94
2 43,22
3 33,11
4 90,61
我需要获得计数每行NewsletterIdCsv然后添加他们都起来以获取所有行的总数,对于基本的行数我现在做了以下内容:
SELECT newsletteridcsv, len(newsletteridcsv) - len(replace(newsletteridcsv, ',', '')) +1 IndividualCount
FROM DBTABLE
这使我的结果:
NewsletterIdCsv IndividualCount
------------ ---------------
48,51,94 3
43,22 2
33,11 2
90,61 2
如何获得总计数(我在这个例子中9)?
注:此表有5百万条记录,我不认为使用临时表来插入计数,然后最终通过临时表行来累积计数是一种优化的方式? 另外我完全反对使用光标来提高效率!
获得总数的最佳方法是什么?
你能标准化您的数据? – Taryn 2013-02-11 18:40:23
“针对效率问题使用游标”,但数据的结构却非常低效。好奇的权衡 – billinkc 2013-02-11 18:43:35
@billinkc由于我们预计有15亿行,所以规范化已经被考虑,尝试和测试,结果非常缓慢,这些只是我们准备最终数据的中间表。 – 2013-02-11 18:44:54