2016-06-29 15 views
1

Hier ist der Code. Ich mache etwas dummes - was ist das? Alles, was ich bekomme, ist "Syntaxfehler".Entfernen unerwünschter Reihen von SQL basiert auf drei Säulen eindeutige ID

select 
    code, shortDescription, longDescription, fullDescripton, 
    codeType, useThruDate, updateDate, updateComment, createDate 
into 
    #irish 
from 
    (select distinct 
     code, shortDescription, longDescription 
     when count(code + shortDescription + longDescription) > 1 
      then delete from #irish where useThruDate <> '2016-30-06' 
       else 0 
     ) 
from [dbo].[irish] 

code  shortDescription longDescription        fullDescription    codeType useThruDate  updat‌​eDate updateComment     createDate 
312291001 47113    Sample text for a description (from 2012) NULL      DB1   2016-30-04  2016-06-06 merged all tables together.  NULL 
312291001 47113    Sample text for a description (from 2012) Lorem ippsum lorem ippsum DB1   2016-30-06  2016-06-06 merged all tables together.  NULL 
312291001 47113    Sample text for a description (from 2012) Lorem ippsum lorem ippsum DB2   2016-31-05  2016-06-06 merged all tables together.  NULL 
+0

Können Sie auf Ihre Frage (edit), ein wenig Beispieldaten hinzufügen und was daraus wäre das Ergebnis? –

+0

Sie sind leider alle Varrer. code = int shortdescription = int longdescription = varchar text- Menschen lesbarer fullDescription = varchar text- Menschen lesbare Codetype = kurze Beschreibung der Datenbank, wo sie von useThruDate kamen in diesem Format ist = YYYY-DD-MM updateDate = YYYY-DD-MM –

+0

Werfen Sie einen Blick auf diese Antwort. Sehen Sie das Ergebnis von der SQL auf der Antwort. Was ich gefragt habe ist, dass Sie ein paar Beispieldaten Ihres Problems hinzufügen. http://stackoverflow.com/a/38106767/460557 –

Antwort

0

Ich glaube, das ist, was Sie anstreben:

/* Creates #irish table */  
CREATE TABLE #irish (
     code NVARCHAR(MAX) 
     ,shortdescription NVARCHAR(MAX) 
     ,longdescription NVARCHAR(MAX) 
     ,fulldescription NVARCHAR(MAX) 
     ,codeType NVARCHAR(MAX) 
     ,useThruDate NVARCHAR(MAX) 
     ,updateDate NVARCHAR(MAX) 
     ,updateComment NVARCHAR(MAX) 
     ,createDate NVARCHAR(MAX) 
    /* insert select into #irish table */ 
    INSERT INTO #irish 

    SELECT DISTINCT 
    Code,ShortDescription,LongDescription, fullDescripton, 
     codeType, useThruDate, updateDate, updateComment, createDate 
    FROM dbo.irish 
    WHERE 
    useThruDate <> '2016-30-06' 
    /* My best understanding of your count critera */ 
    AND (code IS NOT NULL 
    OR shortdescription IS NOT NULL 
    OR longdescription IS NOT NULL) 

    /* selects records from #irish table (which we inserted in the last section) */ 
    SELECT * FROM #irish 
    DROP TABLE #irish 

Es ist erwähnenswert, dass in dieser Abfrage eine temporäre Tabelle mit, wie es steht sehr wenig Nutzen hat, wenn irgendein.

Ich hoffe, das hilft. Es gab einige Probleme mit Ihrem ursprünglichen Code (siehe Gordons Kommentar). Wenn Sie also tiefer einsteigen möchten, würde ich Ihnen empfehlen, ein paar Tutorials zu lesen. W3 ist ein guter Startplatz.