2016-08-08 32 views
0

Ich habe eine Datenbank und muss einen Bericht aus den Tabellen generieren, die mir zur Verfügung gestellt wurden.Reduzieren Sie Zeilenduplizierung, wenn mehrere Werte in untergeordneten Datensätzen vorhanden sind

Die Datenquellabfrage, die ich benutze, während es im Wesentlichen funktioniert, erzeugt Duplikate aufgrund der Felder "Parameter" und "Op Parameter" (jeder kann einer von zwei Werten für jedes eindeutige Tag sein) .

DB Illustration

Was würde ich zu tun ist, jeden Parameter nehmen, jeden Op Parameter und ihre Werte und markieren sie auf neue Felder für den eindeutigen Tag (zB ‚AI17611A‘), so dass jeder Tag ist wird nur einmal mit allen Parametern angezeigt.

Ist das möglich? Wenn ja, wie würde ich darüber gehen?

+0

Behandelt [diese Frage] (http://stackoverflow.com/q/13278590/2144390) Ihr Problem? –

+0

Nicht ganz, aber es ist ähnlich, in diesem Link wird der Code in eine Zeichenfolge verkettet. Was ich brauchen würde, ist, dass es in neue Felder eingeführt wird –

Antwort

0

Wenn Sie ein neues Feld für jeden möglichen Wert von [Op Parametern] wollen, dann können Sie eine Aggregation verwenden (GROUP BY) Abfrage, zum Beispiel für den Probentisch

[so38830066] 

ID Tag  Parameter Op Parameter 
-- -------- --------- ------------ 
1 AI17611A HLPR  HLOP   
2 AI17611A HLPR  HHAOPT  
3 AI17611B HLPR  HLOP   
4 AI17611C HLPR  HHAOPT  

die Abfrage

SELECT 
    so38830066.Tag, so38830066.Parameter, 
    Min([Op Parameter]='HLOP') AS isHLOP, 
    Min([Op Parameter]='HHAOPT') AS isHHAOPT 
FROM so38830066 
GROUP BY so38830066.Tag, so38830066.Parameter; 

produziert

Tag  Parameter isHLOP isHHAOPT 
-------- --------- ------ -------- 
AI17611A HLPR   -1  -1 
AI17611B HLPR   -1   0 
AI17611C HLPR   0  -1 

Man könnte das gleiche für multilple Werte tun [Parameter] (z. B. ein [isHLPR] -Feld erstellen) und dann einfach GROUP BY [Tag].