做个东西,发现了些问题,又解决了,很Happy! 数据库有2个表: [省份表],2列(provinceId--省的id,provinceName--省名字), [公司表],好几列(companyId--公司Id,provinceId--公司所在省id,recruitType--这个招聘会类型(只有1,2,3这三个值,每个值一个含义),......其
做个东西,发现了些问题,又解决了,很Happy!
数据库有2个表:
[省份表],2列(provinceId--省的id,provinceName--省名字),
[公司表],好几列(companyId--公司Id, provinceId--公司所在省id, recruitType--这个招聘会类型(只有1,2,3这三个值,每个值一个含义),......其他问题无关列)
------------------------------------------------------------------------------------------------
方法一:(自己写的)
------------------------------------------------------------------------------------------------
我想获得的结果,即每个省按那三个招聘会类型统计各种类型公司的总数,如下:
------------------------------------------------------------------------------------------------
先获得了下面表,省id,招聘会类型,公司总数,这是在[公司表]里面按(省id,招聘会类型)group by和count()得到的,注意这里有个问题,就是[公司表]里面不是什么省份的都有,所以provinceId是不连续的,所以要在后面处理.
------------------------------------------------------------------------------------------------
然后联合[省份表],得到下面的表,这个很容易,只要注意一下 left join,就可以显示所有的省份了
------------------------------------------------------------------------------------------------
现在问题来了,我想显示的目标图是第一个图,就是这么把那些相同省的行合并为同一行,并且有三个列分别显示那三种招聘会类型的公司总数?
我想了半天,因为最终是要在Web上显示的,我想要不就在数据库搞好,把结果直接返回,Web端就不要处理什么了,要不就这样返回吧,在Web端合并相同的行,
但最后发现还是数据库端好处理,因为T-SQL很强大,并且Web端处理这些表格很麻烦,我不知道它那些DataTable啊什么的类似怎么样构造的,遂选择在数据库端处理.
------------------------------------------------------------------------------------------------
1,建立最后想要结果的表,把目标列写好,然后要不insert,要不update
2,用游标一个一个处理上面的那个表,provinceId一样的就update那一行几个值,否则insert新行
3,最后处理一些数据,得到想要结果:
代码量大啊!!!主要用游标一行一行处理的......
ANSI_NULLS QUOTED_IDENTIFIER
-- Author:
------------------------------------------------------------------------------------------------
方法二:(得到的答案)
------------------------------------------------------------------------------------------------
这里的主要问题就是把有那个有多行省Id是一样的合并到一行中去,添加了列
神伤中......居然可以这么简单......