各位大神:小弟有兩張表,例如
A表
身份證號 金額 001 100 002 50 001 120 001 100
001 70 003 100 B表
身份證號 金額 001 70 003 80 001 100 003 100 現在想對比兩表身份證號和金額完全相同的資料和不同的資料有哪些,重點是每個表中身份證號資料有重復,而且還有可能表里有兩條完全相同的資料,比如a表001有兩條100的記錄,但表b只一條001是100的記錄,需要對比出到底有什么不同。
比如結果如下:
相同資料 身份證號 金額
001 70
001 100
003 100
A表有但b表無
身份證號 金額
002 50
001 120
001 100
B表有但a表無
身份證號 金額
003 80
資料有幾百萬條,人工真的沒法對呀。謝謝大家
uj5u.com熱心網友回復:
各位大神:小弟有兩張表,例如A表
身份證號 金額
001 100
002 50
001 120
001 100
001 70
003 100
B表
身份證號 金額
001 70
003 80
001 100
003 100
現在想對比兩表身份證號和金額完全相同的資料和不同的資料有哪些,重點是每個表中身份證號資料有重復,而且還有可能表里有兩條完全相同的資料,比如a表001有兩條100的記錄,但表b只一條001是100的記錄,需要對比出到底有什么不同。
比如結果如下:
相同資料
身份證號 金額
001 70
001 100
003 100
A表有但b表無
身份證號 金額
002 50
001 120
001 100
B表有但a表無
身份證號 金額
003 80
資料有幾百萬條,人工真的沒法對呀。謝謝大家
uj5u.com熱心網友回復:
小弟新手,分數不多,謝謝各位朋友uj5u.com熱心網友回復:

DECLARE @A TABLE(身份證號 VARCHAR(18) NOT NULL, 金額 INT NOT NULL)
INSERT @A(身份證號, 金額) VALUES
('001', 100),('002', 50 ),('001', 120),('001', 100),('001', 70),('003',100 )
DECLARE @B TABLE (身份證號 VARCHAR(18) NOT NULL, 金額 INT NOT NULL)
INSERT @B(身份證號, 金額) VALUES
('001', 70),('003', 80 ),('001',100),('003',100);
--相同資料
WITH a AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY 身份證號,金額 ORDER BY 金額) seq FROM @A),
b AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY 身份證號,金額 ORDER BY 金額) seq FROM @B)
SELECT a.身份證號, a.金額 FROM a,b WHERE a.seq=b.seq AND a.身份證號=b.身份證號 AND a.金額=b.金額
--A表有但b表無
;WITH a AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY 身份證號,金額 ORDER BY 金額) seq FROM @A),
b AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY 身份證號,金額 ORDER BY 金額) seq FROM @B)
SELECT a.身份證號, a.金額 FROM a WHERE NOT EXISTS(SELECT * FROM b where a.seq=b.seq AND a.身份證號=b.身份證號 AND a.金額=b.金額)
--B表有但a表無
;WITH a AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY 身份證號,金額 ORDER BY 金額) seq FROM @A),
b AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY 身份證號,金額 ORDER BY 金額) seq FROM @B)
SELECT b.身份證號, b.金額 FROM b WHERE NOT EXISTS(SELECT * FROM a where a.seq=b.seq AND a.身份證號=b.身份證號 AND a.金額=b.金額)
uj5u.com熱心網友回復:
非法感謝,正是我所需要的,由于是新手,分怎么給您呢?要如何操作呢轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/87605.html
標籤:疑難問題
上一篇:迷茫的技術夢
