Chcę odzyskać jeden wynik dla każdej [grupy] według najwyższego czasu. Wynik bieżącego kodu: Wybierz [Grupa], ArticLenumber, MAX (TIMETRUE) W miarę upływu czasu z wydajnościOPC (Nolock), gdzie ([Grupa] = 'Pack2' lub ...

2
lukas jarmolowski 15 marzec 2021, 17:20

2 odpowiedzi

Najlepsza odpowiedź

Hmmm . . . Wydawszym, że chcesz union all przed agregując:

SELECT [Group], ArticleNumber, max(Time) as Time
FROM ((SELECT [Group], ArticleNumber, TimeTrue as Time
       FROM PerformanceOpc 
       WHERE [Group] IN ('Pack2', '70521-030')
      ) UNION ALL
      (SELECT [Group], ArticleNumber, StopTime as Time
       FROM StoppageOpc
       WHERE [Group] IN ('Pack2', '70521-030')
      )
     ) g
GROUP BY [Group], ArticleNumber;

Zwraca to jeden wiersz na grupę i artykuł, który wydaje się być tym, co robi twoje zapytanie.

Jeśli naprawdę chcesz tylko jeden wiersz na grupę, wtedy chcesz ROW_NUMBER() i nie agregację:

SELECT g.*
FROM (SELECT g.*, ROW_NUMBER() OVER (PARTITION BY [Group] ORDER BY time DESC) as seqnum
      FROM ((SELECT [Group], ArticleNumber, TimeTrue as Time
             FROM PerformanceOpc 
             WHERE [Group] IN ('Pack2', '70521-030')
            ) UNION ALL
            (SELECT [Group], ArticleNumber, StopTime as Time
             FROM StoppageOpc
             WHERE [Group] IN ('Pack2', '70521-030')
            )
           ) g
      ) g
WHERE seqnum = 1;
0
Gordon Linoff 15 marzec 2021, 14:24

Spróbuj select top 1 za pomocą order by w stolikach czasowych, a następnie zapytać je za pomocą union

SELECT top 1[Group], ArticleNumber, max(TimeTrue) as Time into #tmp1
FROM PerformanceOpc (NOLOCK) WHERE ([Group]='Pack2' OR [Group]='70521-030')
GROUP BY [Group], ArticleNumber
order by Time desc

SELECT top 1 [Group], ArticleNumber, max(StopTime) as Time into #tmp2
FROM StoppageOpc (NOLOCK) WHERE ([Group]='Pack2' OR [Group]='70521-030')
GROUP BY [Group], ArticleNumber
ORDER BY Time DESC
    
select * from #tmp1
union
select * from #tmp2

drop table #tmp1
drop table #tmp2
0
Oliver Mohr Bonometti 15 marzec 2021, 14:28