SSMS
 sql >> база данни >  >> Database Tools >> SSMS

Извършете присъединяване към обединени заявки

сегашният ви метод не е много ефективен. Други обикновено ще използват 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




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Настройте тригер на таблица, за да ограничите броя на операциите INSERT, DELETE, UPDATE

  2. Как да генерирам CRUD съхранени процедури от таблица в SQL Server Management Studio

  3. SSMS Промяна на връзката за прозореца на редактора на заявки

  4. Извършете присъединяване към обединени заявки

  5. SQL заявка, ако стойността е нула, тогава върнете 1