sql >> Databáze >  >> Database Tools >> SSMS

Proveďte spojení u spojených dotazů

vaše současná metoda není příliš účinná. Ostatní obvykle použijí CASE WHEN udělat to.

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

a pak k začlenění do vašeho velkého dotazu můžete použít CTE nebo 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

Nemůžete to udělat X1.t1.uniqueID. , mělo by to být pouze X1.uniqueID




  1. Soubor výpisu MySQL a zakomentované řádky

  2. jak exportovat databázi wordpress z webové matice

  3. Nelze přidat uloženou proceduru do databáze kvůli šifrované zprávě

  4. mysqli_real_connect():(HY000/2002):Žádný takový soubor nebo adresář