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

Doe mee aan samengevoegde zoekopdrachten

uw huidige methode is niet erg efficiënt. Anderen gebruiken meestal CASE WHEN om het te doen.

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

en om vervolgens in uw grote vraag op te nemen, kunt u CTE of AFGELEIDE TABLE gebruiken

-- 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

U kunt dit niet doen X1.t1.uniqueID. , het mag alleen X1.uniqueID . zijn




  1. Hoe alle tabellen in een SQL Server-database te laten vallen?

  2. mysqli_query invoer via variabele

  3. phpmyadmin:maak een functie aan

  4. Tabellen maken in een database met phpMyAdmin