msSQL - Połączenie 2 tabel // działania na 1 tabeli

0

Cześć posiadam bazę MSSQL a w niej 2 tabele które mnie interesują 'vwConveyorScaleMinute' i 'Vehicle'.
w Tabeli vwConveyorScaleMinute sortuje i przeliczam kilka rzeczy np produkcję i wydajność problem polega na tym iż w kolumnie 'VehicleId' jest tylko numer urządzenia np 1,2,5.

SELECT
	VehicleId,
   CAST(SUM(Weight) AS DECIMAL(10, 2)) AS 'Produkacja[t]',
   CAST(AVG(Performance)AS DECIMAL(10, 2))AS 'Wydajność [t/h]'
   
   FROM[TMSCLIENT4].[dbo].[vwConveyorScaleMinute] 
   
   WHERE VehicleId  IN('1','2','4','5','6','7') 
   AND WorkDateTime BETWEEN '2021-10-01 01:00:00.000' AND '2021-10-30 23:00:00.000'
   group by VehicleId

screenshot-20220113092841.png

w Tabeli Vehicle jest dokładana nazwa tych maszyn

screenshot-20220113092957.png

Czy jest jakiś sposób aby połączyć te dwie tabele z tym aby najpierw przeliczyć i posortować 1 tabelę a później dopiero połączyć 2 tak aby wynik wyglądał mniej więcej tak ?

screenshot-20220113093505.png

próbowałem to zrobić poprzez JOIN ale moje początki z SQL utrudniają mi zrobienie tego poprawnie.

0

pokaz jak tego joina zrobiles

2
select s.* from (
select dane_z_pierwszej_tabeli from pierwsza_tabela where warunki) s
join lub left join tabela2 t on t.vehicleid = s.vehicleid
0
SELECT s.*from  (
SELECT
	VehicleId,
   CAST(SUM(Weight) AS DECIMAL(10, 2)) AS 'Produkacja[t]',
   CAST(AVG(Performance)AS DECIMAL(10, 2))AS 'Wydajność [t/h]'
   
   FROM[TMSCLIENT4].[dbo].[vwConveyorScaleMinute] 
   WHERE VehicleId  IN('1','2','4','5','6','7') 
   AND WorkDateTime BETWEEN '2021-10-01 01:00:00.000' AND '2021-10-30 23:00:00.000'
   group by VehicleId)s  
   
   LEFT JOIN [TMSCLIENT4].[dbo].[Vehicle] ON Vehicle.VehicleId = s.VehicleId

screenshot-20220113103524.png

Nadal brakuje nazw z kolumny RegNo, lecz gdy załaduje tą kolumnę zamiast * to wyświetla tylko 2 tabelę. Gdzie popełniam błąd ?

1
SELECT s.*, Vehicle.* from  (
SELECT
    VehicleId,
   CAST(SUM(Weight) AS DECIMAL(10, 2)) AS 'Produkacja[t]',
   CAST(AVG(Performance)AS DECIMAL(10, 2))AS 'Wydajność [t/h]'

   FROM[TMSCLIENT4].[dbo].[vwConveyorScaleMinute] 
   WHERE VehicleId  IN('1','2','4','5','6','7') 
   AND WorkDateTime BETWEEN '2021-10-01 01:00:00.000' AND '2021-10-30 23:00:00.000'
   group by VehicleId)s  

   LEFT JOIN [TMSCLIENT4].[dbo].[Vehicle] ON Vehicle.VehicleId = s.VehicleId

możesz też załatwić to tak:

SELECT * from (

1 użytkowników online, w tym zalogowanych: 0, gości: 1