SQL中对数据每一列的数据处理

不久前做了一个项目,其中需要对操作数据表中的每一列数据,业务需求是,一张日报表,一张基础数据表,日报表每天都会提交数据去更新基础数据表,现在需求是拿出最近一次导入的日报数据去和基础表数据做比较,2张表的数据,对应的列,哪一列不一样,就做出标记或者其他的什么需求的,

先贴上我弄好的存储过程吧:

ALTER PROCEDURE [dbo].[sp_WechatGroup_DayReport_Import_CompareDayAndBasedata]

@Date nvarchar (20)

AS
    BEGIN
    IF EXISTS(SELECT * FROM sysobjects WHERE name=‘#@table‘)
    DROP TABLE #@table
    ELSE

Select *,‘‘ AS remark into #@table From WechatGroup_DayReport w where CONVERT(NVARCHAR(10),CreateDate,121) = CONVERT(NVARCHAR(10),CONVERT(DATETIME,@Date),121)

ALTER TABLE #@table ALTER COLUMN remark NVARCHAR(800)
   UPDATE #@table  SET remark += CASE WHEN B.AnchorCity <> C.AnchorCity THEN ‘AnchorCity, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId
   
   UPDATE #@table  SET remark += CASE WHEN B.Attribute <> C.Attribute THEN ‘群属性 ,‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.city <> C.city THEN ‘城市, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.ClusterCity <> C.ClusterCity THEN ‘ClusterCity, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.CreateUser <> C.CreateUser THEN ‘创建时间, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.Department <> C.Department THEN ‘部门, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.GroupId <> C.GroupId THEN ‘群ID, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.GroupName <> C.GroupName THEN ‘群名, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.HospitalCode <> C.HospitalCode THEN ‘医院代码, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.HospitalName <> C.HospitalName THEN ‘医院名称, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.Province <> C.Province THEN ‘省, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.Region <> C.Region THEN ‘大区, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

UPDATE #@table  SET remark += CASE WHEN B.Status <> C.Status THEN ‘进群状态, ‘ ELSE ‘‘ END
   FROM #@table B, [dbo].[WechatGroup_BaseData] C
   WHERE B.GroupId = C.GroupId

Select  *,ROW_NUMBER() OVER (order by GroupId) AS Raws from #@table
    
    
  END

时间: 2024-10-12 20:15:29

SQL中对数据每一列的数据处理的相关文章

Sql server 中将数据行转列列转行(二)

老规矩,先弄一波测试数据,数据填充代码没有什么意义,先折叠起来: /* 第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 ( StuName nvarchar(20), --学生名称 Chinese int, Math int, English int ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student --查询所有数据 INSERT INTO #Student(StuName,Chinese,Math

powerdesign 下ER模型中展示数据注释中文列

工作三年了,如果说对于数据库不敏感,我觉得的无论是作为一个前端开发人员还是后端开发人员来说,跟别人说你是个软件开发人员,我觉得都有点惭愧.可能之前一直在关注数据库sql的编写等等,但是现在我觉得有必要升华一下了,下面我就我遇到的问题,向大家提供一个解决方案,可能不是最好的,但是当实现了这个效果后,我真的眼前一亮,在此分享给大家...... 软件环境:powerdesign16.5 + win64(64位系统下,由于jdk的版本,powerdesign软件运行不正常,这个我安装jdk1.6_x86

Sql server 中将数据行转列列转行(一)

在做一些数据分析与数据展示时,经常会遇到行转列,列转行的需求,今天就来总结下: 在开始之前,先来创建一个临时表,并且写入一些测试数据: /* 第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 ( StuName nvarchar(20), --学生名称 StuSubject nvarchar(20),--考试科目 StuScore int --考试成绩 ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student

PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务

1.条件控制 A. IF条件分支语法: if (条件1) then 语句; elsif (条件2) then 语句; elsif (条件3) then 语句; else 语句; end if; B . case条件分支:等值比较.条件比较.case表达式 a.等值比较语法: CASE  条件判断 WHEN      条件值的表达式    THEN       要执行的条件操作     ; ……. [ELSE   ……..] END   CASE; b. 条件比较语法: CASE WHEN   不

sql 查询大数据 常用 50列优化

大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到. 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题.下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论. 1.Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点: 对于原

spark sql中保存数据的几种方式

从官网来copy过来的几种模式描述: Scala/Java Python Meaning SaveMode.ErrorIfExists(default) "error"(default) When saving a DataFrame to a data source, if data already exists, an exception is expected to be thrown. SaveMode.Append "append" When saving

十步优化SQL Server中的数据访问(转载)

原文地址:http://tech.it168.com/a2009/1125/814/000000814758.shtml 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因. 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得很大,有些表

SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)

1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地址码 . FlightID Varchar(10) NULL, --航班号) 2/ 建立存储过程 USE DF17DataProIF EXISTS (SELECT * FROM SYS.PROCEDURES WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[BulkDataP

sql中对查询出来的数据进行分页

当sql中存储的数据量比较大时,在web中 数据显示时都会对数据进行分页,分页不会在客户端进行分页,而是在数据库查询过程中进行了分页. sql代码: DECLARE @pageindex INT; --页码 DECLARE @pagesize INT; --每页显示的记录数量 SET @pageindex=; SET @pagesize=5; SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY UserName) AS rownumber,* FRO