сегашният ви метод не е много ефективен. Други обикновено ще използват CASE WHEN
да го направя.
SELECT t.uniqueID,
IN_Info1 = MAX(case when t.type = 'IN' then t.information1 end),
IN_Info2 = MAX(case when t.type = 'IN' then t.information2 end),
IN_Notes = MAX(case when t.type = 'IN' then t.Notes end),
OUT_Info1 = MAX(case when t.type = 'OUT' then t.information1 end),
OUT_Info2 = MAX(case when t.type = 'OUT' then t.information2 end),
OUT_Notes = MAX(case when t.type = 'OUT' then t.Notes end)
FROM TABLEB t
GROUP BY t.uniqueID
и след това, за да включите в голямата си заявка, можете да използвате или CTE, или DERIVED TABLE
-- CTE
; with Tblb as
(
SELECT t.uniqueID,
IN_Info1 = MAX(case when t.type = 'IN' then t.information1 end),
IN_Info2 = MAX(case when t.type = 'IN' then t.information2 end),
IN_Notes = MAX(case when t.type = 'IN' then t.Notes end),
OUT_Info1 = MAX(case when t.type = 'OUT' then t.information1 end),
OUT_Info2 = MAX(case when t.type = 'OUT' then t.information2 end),
OUT_Notes = MAX(case when t.type = 'OUT' then t.Notes end)
FROM TABLEB t
GROUP BY t.uniqueID
)
select *
from TableA a
inner join Tblb b ON a.uniqueID = b.uniqueID
Не можете да направите това X1.t1.uniqueID.
, трябва да бъде само X1.uniqueID