问题描述
通过程序插入,生成了一个datatable,有三列,省名称,城市名称,人名,如下:现在需要按照省会和城市名称进行去重复统计,对应的sql语句为:selectdistinctprovince,city,convert(varchar,count(*)over(partitionbyprovince,city))ascountfromTable_1要达到的检索效果如下图:但是datatable的rowfilter和select方法都只能进行简单的条件筛选,computer方法也只能惊醒简单的统计,无法执行上面的sql语句。请问哪位大神有办法在datatable中执行上面的sql语句,得到图二的效果呢?
解决方案
解决方案二:
其实是你想复杂了,你的sql本身就误导了你,你这功能就是简单的groupby而已,不需要分组查询再合并。所以问题就简化为datatable的groupby,那一句linq就可以了,纯手写没编译,可能有错别介意varquery=fromtindt.AsEnumerable()grouptbynew{t1=t.Field<string>("province"),t2=t.Field<string>("city")}intomselectnew{province=m.Key.t1,city=m.Key.t2,cnt=m.Count()};
解决方案三:
witht1as(select'北京'asprovince,'海淀'ascity,'张三'asnameunionallselect'安徽','合肥','李四'unionallselect'安徽','合肥','王五')selectt.province,t.city,COUNT(t.name)ascofromt1astgroupbyt.province,t.city/*provincecityco北京海淀1安徽合肥2*/