Ако стойностите са ABC
и XYG
са известни предварително, можете да направите условно агрегиране
SELECT ID,
MAX(CASE WHEN type = 'ABC' THEN 'ABC' END) Type1,
MAX(CASE WHEN type = 'ABC' THEN Date END) Date1,
MAX(CASE WHEN type = 'XYG' THEN 'XYZ' END) Type2,
MAX(CASE WHEN type = 'XYG' THEN Date END) Date2,
MAX(Location) Location,
MAX(Result) Result,
MAX(CASE WHEN type = 'ABC' THEN [Proc] END) Proc1,
MAX(CASE WHEN type = 'ABC' THEN ProcDate END) ProcDate1,
MAX(CASE WHEN type = 'ABC' THEN ProcDetail END) ProcDetail1,
MAX(CASE WHEN type = 'ABC' THEN ProcNotes END) ProcNotes1,
MAX(CASE WHEN type = 'XYG' THEN [Proc] END) Proc2,
MAX(CASE WHEN type = 'XYG' THEN ProcDate END) ProcDate2,
MAX(CASE WHEN type = 'XYG' THEN ProcDetail END) ProcDetail2,
MAX(CASE WHEN type = 'XYG' THEN ProcNotes END) ProcNotes2
FROM
(
SELECT * FROM table1 -- that's to emulate your current query with multiple joins
) q
GROUP BY ID
Примерен резултат:
<преди>| ID | ТИП1 | ДАТА1 | ТИП2 | ДАТА2 | МЕСТОПОЛОЖЕНИЕ | РЕЗУЛТАТ | PROC1 | PROCDATE1 | PROCDETAIL1 | ПРОКНОТИ1 | PROC2 | PROCDATE2 | PROCDETAIL2 | PROCNOTES2 ||----|-------|--------------------------------|- ------|--------------------------------|---------- |--------|--------|------------------------------ -|-----------------|--------------|--------|------ --------------------------------|-----------------|----- ---------|| 1 | ABC | 01 януари 2010 г. 00:00:00+0000 | XYZ | 02 януари 2011 г. 00:00:00+0000 | ОК | AO | Proc_B | 01 януари 2013 г. 00:00:00+0000 | Това е Подробности | Proc_B Бележки | Proc_B | 01 януари 2013 г. 00:00:00+0000 | Това е Подробности | Proc_B бележки |Ето го SQLFiddle демонстрация