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

sp

私はテーブルT1を持っています

Id Col1 Col2 アクティブです
1 T1 v1 1
2 T2 v2 0

次のデータを受け取りました。上記のテーブルに挿入する必要があります。

|  Col1  |  Col2  |  
|--------|--------|
|   T1   |   v1   |
|   T2   |   v2   |
|   T3   |   v3   |   

このデータには重複した値が含まれているため、IsActive列の値に基づいて挿入する必要があります。IsActive 1の行の場合、IsActive 2で挿入する必要があり、IsActive 0の行の場合、以下のようにIsActive 1で挿入する必要があり、一意のデータをIsActive 1で挿入する必要がありますが、現時点では問題ありません。

Id Col1 Col2 アクティブです
1 T1 v1 1
2 T2 v2 0
3 T1 v1 2
4 T2 v2 1
5 T3 v3 1

一時テーブル#Tempを作成し、以下のように、新しい受信データと既存のテーブルからのデータに共通の行を挿入しました。

#Temp

Col1 Col2 アクティブです
T1 v1 1
T2 v2 0
T1 v1 ヌル
T2 v2 ヌル

Group Byを使用すると、重複する行を選択できますが、IsActive値に基づいて挿入する必要があるため、ここで立ち往生しました。

insert into T1
select Col1, Col2, '1' from #Temp
GROUP BY Col1, Col2
HAVING COUNT(Col1) > 1

私はこの上記の部分で助けが必要です、事前に感謝します

ジョルゴス・ベトス
Try this:
    
-- create temp table with values to be inserted
INSERT INTO #ToInsert
    ([Col1], [Col2])
VALUES
    ('T1', 'v1'),
    ('T2', 'v2'),
    ('T3', 'v3')

-- join each value of the temp table to the original table. if
-- value exists increment its `IsActive` by 1, otherwise set it to 1
INSERT INTO t (Col1, Col2, IsActive)
SELECT i.Col1, i.Col2, COALESCE(t.IsActive + 1, 1) AS IsActive
FROM #ToInsert i
LEFT JOIN (
   SELECT Col1, Col2, max(IsActive) as IsActive
   FROM t 
   GROUP BY Col1, Col2
) t ON i.Col1 = t.Col1 AND i.Col2 = t.Col2

こちらのデモ

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQL:一般的な多対多の関係を持つ複数のテーブルを比較します

分類Dev

一意のIDを持つ複数の列を持つ2つのデータテーブルを比較します

分類Dev

Oracleテーブルで個別の複数の列を持つ一意の行を取得します

分類Dev

2つのテーブルを比較し、重複するIDを持つ一時列を追加します

分類Dev

複数のテーブルを結合し、テーブルの行を同じテーブルの値を持つ列として表示します

分類Dev

postgresqlの最初のテーブルを持つ2番目のテーブルから1つの列の複数の行を選択します

分類Dev

R-複数の列と行を持つクロステーブルを作成します

分類Dev

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

分類Dev

同じテーブルの複数の結合(複数の条件)を持つSQLをLINQに変換します

分類Dev

SQL Server、同じ列を持つ複数のテーブルに結合します

分類Dev

php / mysql-2つのテーブルの複数の列を比較し、最大の違いを示します

分類Dev

複数の列を持つキーを持つ別のテーブルに基づいて行を削除します

分類Dev

1つの列値に基づいてSQLテーブルの複数の行を結合します

分類Dev

複数の共通列を持つSQL結合テーブル

分類Dev

日付表示の複数の行を持つ2つのテーブルを、他のテーブルの1つの行に結合します

分類Dev

IDごとに複数の行を持つテーブルのSQLクエリは、IDごとに1つの行を出力します

分類Dev

複数のcaseステートメントは、複数の行を持つ1つの列を返します

分類Dev

SQL Server2005の同じテーブルの複数の行を比較します

分類Dev

既存のID列を持つテーブルに複数のレコードを挿入します

分類Dev

SQLiteは他のテーブルから複数の条件を持つ行を選択します

分類Dev

2つのテーブル間の列の数を比較します

分類Dev

関数を計算し、1つの列をテーブル内の複数の列と比較する

分類Dev

TSQLは、同じ列の複数の行に基づいてテーブルを比較しますか?

分類Dev

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

分類Dev

1 つの同じ列を持つ複数のテーブル SQL

分類Dev

複数の条件を持つ他のテーブルのデータでテーブルを更新しますか?

分類Dev

SQLで複数の共通列を持つ2つのテーブルを1つに結合する

分類Dev

ユニオンを持つ複数のテーブルからカウント依存行を選択します

分類Dev

HBase:複数のテーブルを作成しますか、それとも多くの列を持つ単一のテーブルを作成しますか?

Related 関連記事

  1. 1

    SQL:一般的な多対多の関係を持つ複数のテーブルを比較します

  2. 2

    一意のIDを持つ複数の列を持つ2つのデータテーブルを比較します

  3. 3

    Oracleテーブルで個別の複数の列を持つ一意の行を取得します

  4. 4

    2つのテーブルを比較し、重複するIDを持つ一時列を追加します

  5. 5

    複数のテーブルを結合し、テーブルの行を同じテーブルの値を持つ列として表示します

  6. 6

    postgresqlの最初のテーブルを持つ2番目のテーブルから1つの列の複数の行を選択します

  7. 7

    R-複数の列と行を持つクロステーブルを作成します

  8. 8

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

  9. 9

    同じテーブルの複数の結合(複数の条件)を持つSQLをLINQに変換します

  10. 10

    SQL Server、同じ列を持つ複数のテーブルに結合します

  11. 11

    php / mysql-2つのテーブルの複数の列を比較し、最大の違いを示します

  12. 12

    複数の列を持つキーを持つ別のテーブルに基づいて行を削除します

  13. 13

    1つの列値に基づいてSQLテーブルの複数の行を結合します

  14. 14

    複数の共通列を持つSQL結合テーブル

  15. 15

    日付表示の複数の行を持つ2つのテーブルを、他のテーブルの1つの行に結合します

  16. 16

    IDごとに複数の行を持つテーブルのSQLクエリは、IDごとに1つの行を出力します

  17. 17

    複数のcaseステートメントは、複数の行を持つ1つの列を返します

  18. 18

    SQL Server2005の同じテーブルの複数の行を比較します

  19. 19

    既存のID列を持つテーブルに複数のレコードを挿入します

  20. 20

    SQLiteは他のテーブルから複数の条件を持つ行を選択します

  21. 21

    2つのテーブル間の列の数を比較します

  22. 22

    関数を計算し、1つの列をテーブル内の複数の列と比較する

  23. 23

    TSQLは、同じ列の複数の行に基づいてテーブルを比較しますか?

  24. 24

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

  25. 25

    1 つの同じ列を持つ複数のテーブル SQL

  26. 26

    複数の条件を持つ他のテーブルのデータでテーブルを更新しますか?

  27. 27

    SQLで複数の共通列を持つ2つのテーブルを1つに結合する

  28. 28

    ユニオンを持つ複数のテーブルからカウント依存行を選択します

  29. 29

    HBase:複数のテーブルを作成しますか、それとも多くの列を持つ単一のテーブルを作成しますか?

ホットタグ

アーカイブ