2016-08-22 2 views
0

Интересно, что не так с этим запросом, он возвращать слишком много строк (не уникальные значения)Что плохого в моем запросе

SELECT tt.* 
FROM Arkusz1 tt 
INNER JOIN 
(
    SELECT ONTSERIALNUMBER, MAX(ONTBEUP) AS MaxBEUP 
    FROM Arkusz1 
    GROUP BY ONTSERIALNUMBER 
) groupedtt 
    ON tt.ONTSERIALNUMBER = groupedtt.ONTSERIALNUMBER AND 
     tt.ONTBEUP = groupedtt.MaxBEUP 

несмотря на то, что подзапрос работает правильно:

SELECT ONTSERIALNUMBER, 
     MAX(ONTBEUP) AS MaxBEUP 
FROM Arkusz1 
GROUP BY ONTSERIALNUMBER 
+1

Elaborate на то, что вы имеете в виду 'вернуть слишком много rows' ... –

+0

я имею в виду, что он не возвращает уникальные значения в качестве подзапроса –

+0

На первый взгляд: Есть ONTBEUP уникален для каждого ONTSERIALNUMBER? –

ответ

0

Если ваш запрос возвращает записи, которые кажутся дублирующими, это просто означает, что более чем одна запись может соответствовать заданному серийному номеру и максимальному значению beup. Быстро исправить здесь просто использовать SELECT DISTINCT:

SELECT DISTINCT tt.* 
FROM Arkusz1 tt 
INNER JOIN 
(
    SELECT ONTSERIALNUMBER, MAX(ONTBEUP) AS MaxBEUP 
    FROM Arkusz1 
    GROUP BY ONTSERIALNUMBER 
) groupedtt 
    ON tt.ONTSERIALNUMBER = groupedtt.ONTSERIALNUMBER AND 
     tt.ONTBEUP = groupedtt.MaxBEUP 
+0

Не очень, только ONTSERIALNUMBER должен быть уникальным, поэтому я получаю значение max (ONTBEUP) для каждого SERIALNUMBER, но мне нужно также значение мощности (3-й столбец), который определенная строка будет иметь –

Смежные вопросы