sql server比较一张表中的行

安德烈·塔纳塞斯库(Andrei Tanasescu)

我想跟踪系统设置的更改,并在Web应用程序ASP.net VB中显示它们。设置信息/数据存储在这样的表中:

TABLE 1

| SNR | LENSE | CAMERA | SYS |
|-----|-------|--------|-----|
|   1 |  55mm |  rcd30 |   5 | (initial setup sys 5)
|   2 |  80mm |    ph1 |   4 | (initial setup sys 4)
|   3 |  80mm |    ph1 |   4 | (new setup sys 4)
|   4 |  55mm |    ph1 |   5 | (new setup sys 5)
|   5 |  80mm |  rcd30 |   5 | (new setup sys 5)

我想要比较两个系统(4个和5个)在同一系统的设置之间是否发生了哪些变化,并创建一个表以保存结果,并在每次加载设置列表时从此处显示它们。

例如,如果我比较sys nr 5的设置,比较第1行和第4行,则相机有区别;在4至5之间,相机和镜头都会改变。如果将每个系统的第一条记录视为初始设置,则此方法有效。

CHANGES

| SNR | LENSE | CAMERA | SYS |
|-----|-------|--------|-----|
|   1 |     n |      n |   5 | (initial setup sys 5)
|   2 |     n |      n |   4 | (initial setup sys 4)
|   3 |     n |      n |   4 | (new setup sys 4)
|   4 |     n |      y |   5 | (new setup sys 5)
|   5 |     y |      y |   5 | (new setup sys 5)

是否可以使用SQL做到这一点?有什么想法吗?SQL从来不是我最强的地方:(

编辑:使用SQL Server 2012

约阿希姆·伊萨克森(Joachim Isaksson)

如果您使用的是SQL Server 2012或更高版本,则可以使用LAG来查找先前的值,并仅使用aCASE来确定旧值和新值是否不同;否则,请使用

WITH cte AS (
  SELECT snr, sys,
         lense,  LAG(lense)  OVER (PARTITION BY sys ORDER BY snr) old_lense,
         camera, LAG(camera) OVER (PARTITION BY sys ORDER BY snr) old_camera
  FROM table1
)
SELECT snr, sys,
       CASE WHEN lense  <> old_lense  THEN 'y' ELSE 'n' END lense,
       CASE WHEN camera <> old_camera THEN 'y' ELSE 'n' END camera
FROM cte
ORDER BY snr;

要使用进行测试的SQLfiddle

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sql server比较一张表中的行

来自分类Dev

通过从SQL Server的另一张表中选择行,将所有行一张一张地插入到空表中

来自分类Dev

比较SQL Server 2005中同一张表中的多行

来自分类Dev

sql比较同一张表中的两个唯一行

来自分类Dev

SQL - 比较一张表中的数据

来自分类Dev

使用同一张表中的一列数据比较一列SQL

来自分类Dev

Oracle SQL-如何比较同一张表中2套之间的行数?

来自分类Dev

我应该使用哪种SQL WHERE条件在特定时间以最长的时间将一张表中的一行数据从一张表转移到另一张表?

来自分类Dev

一张表中的SQL多条件

来自分类Dev

仅在一张表上重建SQL中的索引

来自分类Dev

PHP SQL - 从一张表中多选

来自分类Dev

SQL Server 将随机数据从一张表复制到另一张表

来自分类Dev

在sql中根据另一张表中的日期计算一张表的数量总和

来自分类Dev

如何使用sql server 2008中的查询在一张表中的所有列中获取很少的列名

来自分类Dev

SQL INSERT INTO 一张表中的两张表

来自分类Dev

SQL:限制一张表的结果

来自分类Dev

一张表的SQL算术运算

来自分类Dev

SQL将一张表的多行合并为多列的一行

来自分类Dev

如何规范化两张表或一张明细表中的sql表

来自分类Dev

SQL Server-为什么对同一张表进行两次扫描?

来自分类Dev

SQL Server触发器更新同一张表

来自分类Dev

更新一列后,将该行移至sql中的另一张表

来自分类Dev

使用MySQL比较一张表中的行

来自分类Dev

SQL从一张表中获取计数并分成两列

来自分类Dev

从另一张表中查询两列值的SQL查询

来自分类Dev

如何在Oracle SQL中的同一张表上查找和过滤数据

来自分类Dev

SQL-根据查询结果从一张表中获取计数

来自分类Dev

sql,从一张表中获取父母和孩子

来自分类Dev

SQL炼金术中如何加入同一张表并计算数据

Related 相关文章

  1. 1

    sql server比较一张表中的行

  2. 2

    通过从SQL Server的另一张表中选择行,将所有行一张一张地插入到空表中

  3. 3

    比较SQL Server 2005中同一张表中的多行

  4. 4

    sql比较同一张表中的两个唯一行

  5. 5

    SQL - 比较一张表中的数据

  6. 6

    使用同一张表中的一列数据比较一列SQL

  7. 7

    Oracle SQL-如何比较同一张表中2套之间的行数?

  8. 8

    我应该使用哪种SQL WHERE条件在特定时间以最长的时间将一张表中的一行数据从一张表转移到另一张表?

  9. 9

    一张表中的SQL多条件

  10. 10

    仅在一张表上重建SQL中的索引

  11. 11

    PHP SQL - 从一张表中多选

  12. 12

    SQL Server 将随机数据从一张表复制到另一张表

  13. 13

    在sql中根据另一张表中的日期计算一张表的数量总和

  14. 14

    如何使用sql server 2008中的查询在一张表中的所有列中获取很少的列名

  15. 15

    SQL INSERT INTO 一张表中的两张表

  16. 16

    SQL:限制一张表的结果

  17. 17

    一张表的SQL算术运算

  18. 18

    SQL将一张表的多行合并为多列的一行

  19. 19

    如何规范化两张表或一张明细表中的sql表

  20. 20

    SQL Server-为什么对同一张表进行两次扫描?

  21. 21

    SQL Server触发器更新同一张表

  22. 22

    更新一列后,将该行移至sql中的另一张表

  23. 23

    使用MySQL比较一张表中的行

  24. 24

    SQL从一张表中获取计数并分成两列

  25. 25

    从另一张表中查询两列值的SQL查询

  26. 26

    如何在Oracle SQL中的同一张表上查找和过滤数据

  27. 27

    SQL-根据查询结果从一张表中获取计数

  28. 28

    sql,从一张表中获取父母和孩子

  29. 29

    SQL炼金术中如何加入同一张表并计算数据

热门标签

归档