zoukankan      html  css  js  c++  java
  • sqlserver中视图没有主键值但是想进行分组计数查询时该怎么处理?

    sqlser的view平时用的很多了,但是一直都是当做一个虚拟表格来使用。

    最近碰到一个需求,要求把原有的数据进行分组查询,同时还需要进行计数统计。

    原有逻辑就是通过entity和view配合直接显示在页面上,在view里没有主键值,所以显示新数据时总是达不到要求,

    因此将映射表中的ID加入view里,可是这样sql里就必要用讲ID进行group by,那这样就不可能实现计数统计了。

    查资料后发现可以使用sql的系统函数row_number()来达到虚拟表里有key值但是又不用再group by是加入影响显示。

    于是先修改试图:

    alter view vw_LogTimes
    as
    SELECT   ID=ROW_NUMBER() over(order by Memo),Action, Description, COUNT(1) AS times, MemberID, Memo
    FROM      dbo.ActionLog
    GROUP BY Action, Description, MemberID, Memo
    go
    ID=ROW_NUMBER() over(order by Memo)就是给view一个主键

    然后修改entity的结构,但这里出现了一个问题,直接通过右键“从数据库更新数据模型”无法更新成功,entity中还是没有更新出ID这个字段,
    于是我就先修改view,让它还是映射原表格的ID(varchar类型),然后右键更新,再去把view恢复到row_number,之后手动修改cs文件中ID的数据类型。
    但编译后依然会出错,会提示xxxInfo.vw_LogTimes中ID的数据类型和xxxInfo.Store.
    vw_LogTimes中ID的数据类型不符,后者依然还是int32,
    因此打开模型浏览器,像更新edmx中的对象一样,这里也更新一次就大功告成了。
  • 相关阅读:
    前端工具Gulp的学习
    研究javascript中的this
    如何让引入ES6的html文件运行起来
    windows用命令方式查看文件内容
    windows中用'ls'命令查看项目目录
    一步步理解ajax
    【拥抱ES6】搭建一个ES6环境
    npm还是cnpm
    【聊一聊】css中的经典布局——圣杯布局
    【聊一聊】css中的经典布局——双飞翼布局
  • 原文地址:https://www.cnblogs.com/EleMMent/p/10232664.html
Copyright © 2011-2022 走看看