SQL: Tabel met COUNT DISTINCT

Status
Niet open voor verdere reacties.

mvisbeek

Gebruiker
Lid geworden
18 jul 2008
Berichten
9
SQL: Tabel met COUNT DISTINCT-vorm uitbreiden met extra argument

Ik heb gegevens van de volgende vorm:

Code:
WEEK   ORDER      TYPE
29         12345          ABC
29         12555          ABC
29         12555          ABC
30         12222          BBB
30         12222          BBB
31         10494          CCC
31         11111          EEE

Nu wil ik daar eigenlijk een tabel van maken die per week laat zien wat het totaal aantal unieke orders is, en het aantal unieke orders per type.

Voor dit voorbeeld zou het resultaat van de query er dus zo uit moeten zien:

Code:
WEEK   ORDERS    ABC    BBB    CCC    EEE
29          2                2         0          0        0
30          1                0         1          0        0
31          2                0         0          1        1

Tot nu toe was me wel gelukt om de week en het totaal aantal unieke orders te verkrijgen, daarvoor gebruik ik de volgende code:

Code:
SELECT q1.week, Count(q1.ordernr) AS Gekeurd
FROM (SELECT DISTINCT week, ordernr FROM Rapportdata)  AS Q1
GROUP BY q1.week;

Maar ik krijg het niet voor elkaar om nog per type het aantal unieke orders te berekenen.

Weet iemand hoe ik dit zou kunnen doen? Alvast heel erg bedankt!
 
Laatst bewerkt:
edit: Oplossing toch nog niet gevonden. Mijn eigen knutselwerkje klopte toch niet helemaal..
 
Laatst bewerkt:
je moet je afvragen hoe het komt dat die records meerdere keren voorkomen in je tabel. volgens mij is dat een onwenselijke situatie.

Ik zou een query maken met een distinct of een group by. Deze query dient dan als basis voor de queries die jij wilt maken. Het zou verder geen problemen moge ngeven denk ik.

Enjoy!
 
Er is per record nog meer specifieke informatie die wel verschilt, dus het zijn niet simpelweg dubbele records.

Heb van alles geprobeerd maar tot nu toe is het me nog niet gelukt :confused:
 
Als je een voorbeeld database post dat zal helpen.

Nogmaals, Order 12555 is van het type ABC. Dat zou niet tweemaal opgeslagen hoeven te worden. Je database is niet genormaliseerd. Eenmaal genormaliseerd wordt de oplossing van je vraag een stuk eenvoudiger.

Als dit je tabel ORDERS is:
Code:
WEEK   ORDER      TYPE
29         12345          ABC
29         12555          ABC
29         12555          ABC
30         12222          BBB
30         12222          BBB
31         10494          CCC
31         11111          EEE
Dan geeft de volgende query het aantal verschillende orders.
Code:
Select distinct week, order, type from ORDERS
Om het resultaat te krijgen dat je wilt, dan kan je de volgende query gebruiken
Code:
select week, order, iif(type = 'ABC',1,0) AS 'ABC', iif(type = 'BBB',1,0) AS 'BBB' , iif(type = 'CCC',1,0) AS 'CCC', iif(type = 'EEE',1,0) AS 'EEE' from ORDERS
Je kan ook nog een distinct toevoegen om dubbele records eruit te filteren.
De query moet je aanpassen voor je eigen gebruik.



HTH:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan