Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

उन पंक्तियों को कैसे खोजें जो एक कुंजी द्वारा डुप्लिकेट हैं लेकिन सभी कॉलम में डुप्लिकेट नहीं हैं?

आप यह कहते हुए तालिका में शामिल होकर ऐसा कर सकते हैं कि D सभी समान हैं और C में से कम से कम एक समान नहीं है।

CREATE TABLE #Source (
    D1 VARCHAR(2),
    D2 VARCHAR(2),
    D3 VARCHAR(2),
    C4 VARCHAR(2),
    C5 VARCHAR(2),
    C6 VARCHAR(2) );

INSERT INTO #Source VALUES ('A', 'B', 'C', 'X1', 'X2', 'X3');
INSERT INTO #Source VALUES ('A', 'B', 'C', 'X1', 'X2', 'X4');
INSERT INTO #Source VALUES ('A', 'B', 'D', 'X1', 'X2', 'X3');
INSERT INTO #Source VALUES ('A', 'B', 'D', 'X1', 'X2', 'X3');

SELECT S1.D1, S1.D2, S1.D3, S1.C4 C4_1, S2.C4 C4_2, S1.C5 C5_1, S2.C5 C5_2, S1.C6 C6_1, S2.C6 C6_2
FROM
    #Source S1
            INNER JOIN
    #Source S2
            ON
        (       S1.D1 = S2.D1 
            AND S1.D2 = S2.D2
            AND S1.D3 = S2.D3
            AND (   S1.C4 <> S2.C4
                 OR S1.C5 <> S2.C5
                 OR S1.C6 <> S2.C6
                 )
        );

DROP TABLE #Source;

निम्नलिखित परिणाम देता है:

D1   D2   D3   C4_1 C4_2 C5_1 C5_2 C6_1 C6_2
---- ---- ---- ---- ---- ---- ---- ---- ----
A    B    C    X1   X1   X2   X2   X4   X3
A    B    C    X1   X1   X2   X2   X3   X4

यह भी ध्यान दें कि यह MS SQL 2000 के साथ संगत है जैसा कि आपने बाद में संकेत दिया था कॉमन टेबल एक्सप्रेशंस का उपयोग करके एक एसक्यूएल क्वेरी को बिना (एसक्यूएल सर्वर 2000 के लिए) में कैसे बदलें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल जुड़ता है:एसक्यूएल एएनएसआई मानक का भविष्य (जहां बनाम शामिल हों)?

  2. क्वेरी-एसक्यूएल सर्वर द्वारा समूह में अंतिम पंक्ति खोजें

  3. PHP FreeTDS एक्सटेंशन का उपयोग करके MSSQL सर्वर से UTF-8 वर्णसेट के साथ डेटा प्राप्त करना

  4. SQL सर्वर 2008 में डेटाटाइम शनिवार या रविवार होने पर कैसे जांचें?

  5. SQL सर्वर में डेटाबेस पर परिवर्तन डेटा कैप्चर (सीडीसी) को अक्षम कैसे करें - SQL सर्वर ट्यूटोरियल