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中的对象一样,这里也更新一次就大功告成了。
  • 相关阅读:
    js广告随窗口滚动小案例
    CSS中Float概念相关文章
    图片展示javascript各类型的关系
    ajax调用异常
    设置修改 Apache 文件根目录 (Document Root)
    SQL查询今天与昨天的记录,及本月记录、本周记录
    服务器角色
    javaScript进阶昂贵的集合
    .net实体新解
    数组操作时避免空值出现
  • 原文地址:https://www.cnblogs.com/EleMMent/p/10232664.html
Copyright © 2011-2022 走看看