jeg ønsker en SQL sætning som kun retunerer de Item No_ records som findes én gang.
Altså, står et Item No_ listet 2 eller mere gange, skal de ignoreres. Men er Item No_ kun i tabellen en gang, så skal det med ud.
jeg har forsøgt med denne sætning, men det virker ikke rigtig. Hvad mon jeg gør galt?
SELECT [Item No_], [Posting Date], COUNT([Item No_]) AS Antal FROM myTable GROUP BY [Entry Type], [Posting Date], [Item No_] HAVING ([Entry Type] = 1) AND (COUNT([Item No_]) = 1) ORDER BY [Posting Date] DESC
HAVING COUNT(*) = 1 og flyt [Entry Type] = 1 til WHERE
SELECT [Item No_], [Posting Date], COUNT([Item No_]) AS Antal FROM myTable WHERE [Entry Type] = 1 GROUP BY [Entry Type], [Posting Date], [Item No_] HAVING COUNT(*)= 1 ORDER BY [Posting Date] DESC
Synes godt om
Slettet bruger
22. januar 2015 - 12:37#2
GROUP BY skal også ændres ellers får du én pr. dato:
SELECT [Item No_], max([Posting Date]), COUNT([Item No_]) AS Antal FROM myTable WHERE [Entry Type] = 1 GROUP BY [Item No_] HAVING COUNT(*)= 1 ORDER BY [Posting Date] DESC
Hvis du vil have fat i alle de detail-linjer der har et bestemt antal linjer, kan du lave en join til din grupperede tabel
SELECT t1.* FROM myTable t1 INNER JOIN ( SELECT [Entry Type],[Item No_], [Posting Date] FROM myTable GROUP BY [Entry Type], [Posting Date], [Item No_] HAVING (COUNT([Item No_]) = 1) AS t2 ON t1.[Entry Type]=t2.[Entry Type] AND t1.[Item No_]=t2.[Item No_] AND t1.[Posting Date]=t2.[Posting Date]
Det vil åbne for at vælge andre kriterier end 1.
Hvis du er tilfreds med kun at fange dem med 1 række, er det kun små ting du bør ændre i din oprindelige forespørgsel:
SELECT [Item No_], [Posting Date], COUNT([Item No_]) AS Antal FROM myTable WHERE ([Entry Type] = 1) GROUP BY [Posting Date], [Item No_] HAVING (COUNT([Item No_]) = 1) ORDER BY [Posting Date] DESC
dvs. GROUP BY kan kun indeholde de felter der også er i SELECT sætningen (ekskl. COUNT, der jo er en grupperingsfunktion) og kriteriet på [Entry Type] må tilsvarende flyttes fra HAVING til WHERE (da det ikke indgår i SELECT felterne).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.