SQLServerは1つのテーブルの行を比較します

アンドレイ・タナセスク

システム設定の変更を追跡し、それらをWebアプリケーションASP.netVBに表示したいと思います。セットアップ情報/データは次のようなテーブルに保存されます。

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 Server2012を使用

Joachim Isaksson

SQL Server 2012以降を使用LAGしている場合は、を使用して以前の値を検索しCASE、古い値と新しい値が異なるかどうかにのみを使用できます。

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

1つのテーブルの行をMySQLと比較します

分類Dev

PowerBIのテーブルの2つの行を比較します

分類Dev

SQLServer複数の行を1つに合計します-一時テーブルはありません

分類Dev

SSMSSQL-テーブルの1つの行を前の行と比較します-ステータスの変更

分類Dev

同じテーブルの2つの行の間で1つのフィールドを比較します

分類Dev

SQLServer-テーブルを1つのテーブルに結合します

分類Dev

SQLServerの同じテーブルの列を比較します

分類Dev

2つのテーブルを行と列で比較します

分類Dev

1つのテーブルの2つの列を行ごとに比較します

分類Dev

テーブル内の同じ値を持つ重複行を削除しますが、SQLServerでは1行を保持します

分類Dev

Mysqlは2つのテーブルを比較します

分類Dev

SQLServerで2つの異なるテーブルの2つのテキスト列を行ごとに比較します

分類Dev

SQLCTEは同じテーブルの行を比較します

分類Dev

Oracle SQLは、同じテーブルの行を比較します

分類Dev

SQL Server:他の2つのテーブルの結果セットを比較しながら、1つのテーブルの行を反復処理します

分類Dev

2つのテーブルを比較し、1つのテーブルからデータを選択します

分類Dev

SQLServer-2つのテーブルのフィールドをPIVOTクエリと比較します

分類Dev

mysqlは1つのテーブルの2つのテーブル行を結合します

分類Dev

SQL複数の列を持つテーブルの行を比較します

分類Dev

1つのクエリで2つのテーブルの行数を比較し、ブール値を返します

分類Dev

SQL-1つのテーブルのデータを比較します

分類Dev

2つのテーブルの2つの列の値を比較できず、最初のテーブルにある場合は最良の行を返します

分類Dev

SQLiteは2つのテーブルを比較し、実際の行をフェッチします

分類Dev

TSQLは行の値を1つの列テーブルに変換します

分類Dev

sqlは同じテーブルの2つの一意の行を比較します

分類Dev

行のコレクションを1つのテーブルから別のテーブルの列に接続します-SQLServer

分類Dev

MySQLは1つのテーブルを使用して1つの行のみを返します

分類Dev

SQLServerは2つのテーブルレコードをマージします

分類Dev

SQLServerでスキーマが異なる2つのテーブルを比較します

Related 関連記事

  1. 1

    1つのテーブルの行をMySQLと比較します

  2. 2

    PowerBIのテーブルの2つの行を比較します

  3. 3

    SQLServer複数の行を1つに合計します-一時テーブルはありません

  4. 4

    SSMSSQL-テーブルの1つの行を前の行と比較します-ステータスの変更

  5. 5

    同じテーブルの2つの行の間で1つのフィールドを比較します

  6. 6

    SQLServer-テーブルを1つのテーブルに結合します

  7. 7

    SQLServerの同じテーブルの列を比較します

  8. 8

    2つのテーブルを行と列で比較します

  9. 9

    1つのテーブルの2つの列を行ごとに比較します

  10. 10

    テーブル内の同じ値を持つ重複行を削除しますが、SQLServerでは1行を保持します

  11. 11

    Mysqlは2つのテーブルを比較します

  12. 12

    SQLServerで2つの異なるテーブルの2つのテキスト列を行ごとに比較します

  13. 13

    SQLCTEは同じテーブルの行を比較します

  14. 14

    Oracle SQLは、同じテーブルの行を比較します

  15. 15

    SQL Server:他の2つのテーブルの結果セットを比較しながら、1つのテーブルの行を反復処理します

  16. 16

    2つのテーブルを比較し、1つのテーブルからデータを選択します

  17. 17

    SQLServer-2つのテーブルのフィールドをPIVOTクエリと比較します

  18. 18

    mysqlは1つのテーブルの2つのテーブル行を結合します

  19. 19

    SQL複数の列を持つテーブルの行を比較します

  20. 20

    1つのクエリで2つのテーブルの行数を比較し、ブール値を返します

  21. 21

    SQL-1つのテーブルのデータを比較します

  22. 22

    2つのテーブルの2つの列の値を比較できず、最初のテーブルにある場合は最良の行を返します

  23. 23

    SQLiteは2つのテーブルを比較し、実際の行をフェッチします

  24. 24

    TSQLは行の値を1つの列テーブルに変換します

  25. 25

    sqlは同じテーブルの2つの一意の行を比較します

  26. 26

    行のコレクションを1つのテーブルから別のテーブルの列に接続します-SQLServer

  27. 27

    MySQLは1つのテーブルを使用して1つの行のみを返します

  28. 28

    SQLServerは2つのテーブルレコードをマージします

  29. 29

    SQLServerでスキーマが異なる2つのテーブルを比較します

ホットタグ

アーカイブ