RDBMS - Максимальное значение SQL столбца, основанное на уникальности другого столбца - PullRequest
3 голосов
/ 03 января 2011

Это действительно сложный вопрос.Так что здесь идет.Следующий sql:

select * from Survey_Answers 
where QuestionID='50a350a5-9f53-4f1a-83b8-485de45ac9a9'  
order by MaxRating

Генерирует следующее:

QuestionID                             Answer     Value MaxRating MinRating
--------------------------------------------------------------------------
50a350a5-9f53-4f1a-83b8-485de45ac9a9   anywhere       0     1         0
50a350a5-9f53-4f1a-83b8-485de45ac9a9   anyplace       0     2         0
50a350a5-9f53-4f1a-83b8-485de45ac9a9   test           9     2         0
50a350a5-9f53-4f1a-83b8-485de45ac9a9   love           10    3         0
50a350a5-9f53-4f1a-83b8-485de45ac9a9   no one         10    4         0
50a350a5-9f53-4f1a-83b8-485de45ac9a9   feel this way  0     5         0

(6 row(s) affected)

В столбце MaxRating есть две "2".Я хотел бы получить максимальное значение этих двух столбцов.Так, например, если бы было три 1 и 2 2 и пять 4, я бы хотел, чтобы максимальное значение столбца «значение» основывалось на различных столбцах максимизации.

Я надеюсь, что это имеет смысл, а нерезультат должен быть:

QuestionID                             Answer     Value MaxRating MinRating
--------------------------------------------------------------------------
50a350a5-9f53-4f1a-83b8-485de45ac9a9   anywhere       0     1         0
50a350a5-9f53-4f1a-83b8-485de45ac9a9   test           9     2         0
50a350a5-9f53-4f1a-83b8-485de45ac9a9   love           10    3         0
50a350a5-9f53-4f1a-83b8-485de45ac9a9   no one         10    4         0
50a350a5-9f53-4f1a-83b8-485de45ac9a9   feel this way  0     5         0

9 - максимум столбца «Значение», основанный на столбце Maxrating с данными «2»

Это так сложно объяснить, поэтому я надеюсь,кто-то это понимает.Любая помощь приветствуется.Любая помощь в переформулировании это было бы здорово.Спасибо.

1 Ответ

2 голосов
/ 03 января 2011

Примерно так:

select *
from Survey_Answers sa1
where sa1.QuestionID = '50a350a5-9f53-4f1a-83b8-485de45ac9a9'  
and sa1.value = (select max(value) 
                 from Survey_Answers sa2
                where sa2.questionid = sa1.QuestionID
                  and sa2.maxrating = sa1.maxrating)
order by MaxRating
...