2017-08-07 1 views
-2

Ich habe alles müde, aber ich konnte es nicht herausfinden. Ihre Hilfe wird sehr geschätzt. Im Grunde habe ich vier Spalten: ID, fst_nm, lst_nm, code und ich bekomme mehrere doppelte Zeile Ergebnisse, weil einige der Leute mehr als einen Code haben. DieseWie werden Abfrageergebnisse basierend auf ID oder spezifischer Spalte in eine neue Spalte konvertiert?

ist, dass ich bekommen:

+------+----------+----------+--------+ 
| ID | fst_nm | lst_nm | Code | 
+------+----------+----------+--------+ 
| 987 | BRADLY | MARTIN | LB102 | 
| 987 | BRADLY | MARTIN | LB101 | 
| 999 | DAVID | LOZA | PG102 | 
| 921 | PATRIC | TEST | P5102 | 
| 900 | JUSTIN | MARTIN | P6415 | 
| 900 | JUSTIN | MARTIN | LB105 | 
| 900 | JUSTIN | MARTIN | P1003 | 
| 880 | ROBIN | JURRY | 90686 | 
| 880 | ROBIN | JURRY | 90471 | 
+------+----------+----------+--------+ 

Und das ist, was ich wirklich will:

+------+----------+----------+---------+---------+--------+ 
| ID | fst_nm | lst_nm | Code | Code1 | Code2 | 
+------+----------+----------+---------+---------+--------+ 
| 987 | BRADLY | MARTIN | LB102 | LB101 |  | 
| 999 | DAVID | LOZA | PG102 |   |  | 
| 921 | PATRIC | TEST | P5102 |   |  | 
| 900 | JUSTIN | MARTIN | P6415 | LB105 | P1003 | 
| 880 | ROBIN | JURRY | 90686 | 90471 |  | 
+------+----------+----------+---------+---------+--------+ 

ich jede Zeile verschieden und bewegen-Code, um neue Spalten machen wollen, wenn eine Person mehrere haben Codes. Gibt es eine Möglichkeit dies zu tun, ist SQL oder MS-Zugang? Bitte hilf mir!

+0

es für MS Access ist oder SQL Server? –

+0

Sieht aus wie eine Pivot/Transformation in msaccess, die eine dynamische Anzahl von Spalten erlaubt, also auf ID, fst_nm, lst_nm schwenken und dann wird der Code die Anzahl der benötigten Spalten. Außerhalb von MSAccess müsste dies mit dynamischem SQL mithilfe eines Pivot erfolgen. oder wenn Sie eine endliche Anzahl von Codes haben, eine Groß- und Kleinschreibung mit einer Zeilennummer. https://stackoverflow.com/questions/16691853/transform-and-pivot-in-access-2013-sql für msaccess. – xQbert

+0

Welche RDBMS verwenden Sie? mysql oder sql-server oder Zugriff? Bitte markieren Sie richtig, können nicht alle von ihnen sein –

Antwort

0

Sie können wie unten schwenken:

Select * from (
    Select *, RowN = Row_Number() over (partition by id order by Code) from #data) a 
pivot(max(code) for RowN in ([1],[2],[3])) p 
0

Versuchen Sie, diese

Select distinct id,fst_nm,lst_nm,(Select Code From mytable t2 
Where t1.ID = t2.id limit 1) as Code, 
(Select Code From mytable t2 Where t1.ID = t2.id limit 1,1) as Code2, 
(Select Code From mytable t2 Where t1.ID = t2.id limit 2,1) as Code3 
From mytable t1 

Wenn Sie MSSQL Server verwenden gibt es eine heikle Situation

Select distinct id,fst_nm,lst_nm, 
(select top 1 Code From mytable t2 Where t1.ID = t2.Id order by Code), 
(SELECT CODE FROM (
     SELECT 
     CODE,ID, ROW_NUMBER() OVER(ORDER BY CODE) AS ROW 
     FROM mytable t2 Where t1.ID = t2.id 
     ) AS tbl 
     WHERE ROW = 2 
) SECONDCODE, 
(SELECT CODE FROM (
     SELECT 
     CODE,ID, ROW_NUMBER() OVER(ORDER BY CODE) AS ROW 
     FROM mytable t2 Where t1.ID = t2.id 
     ) AS tbl 
     WHERE ROW = 3 
) THIRDCODE 
From mytable t1 
+0

Ich bekam immer 'Inkorrekte Syntax in der Nähe von' LIMIT '. –

+0

Es hat funktioniert. Vielen Dank für deine Hilfe!!! –

Verwandte Themen