sql >> Databasteknik >  >> Database Tools >> SSMS

Utför gå med på sammanfogade frågor

din nuvarande metod är inte särskilt effektiv. Andra använder vanligtvis CASE WHEN att göra det.

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

och sedan för att inkludera i din stora fråga kan du antingen använda CTE eller 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

Du kan inte göra detta X1.t1.uniqueID. , det ska bara vara X1.uniqueID




  1. MySQL matar ut västerländsk kodning i UTF-8 PHP-fil

  2. isset värde returnerar alltid 1

  3. Hur får jag åtkomst till mysql från mac terminal med xampp?

  4. PHPMyAdmin Standardinloggningslösenord