Как получить правильный счет на сервере SQL при получении большого количества полей? - PullRequest
2 голосов
/ 04 марта 2009

Вот мой сценарий,

У меня есть запрос, который возвращает много полей. Одно из полей называется ID, и я хочу сгруппировать по ID и показывать счет в порядке убывания. Однако, поскольку я возвращаю больше полей, становится все труднее показать истинный счет, потому что я должен сгруппировать по этим другим полям. Вот пример того, что я пытаюсь сделать. Если у меня просто есть 2 поля (ID, цвет) и я группирую по цвету, я могу получить что-то вроде этого:

ID ЦВЕТНОЙ СЧЕТ

== ===== =====

2 красных 10

3 синего 5

4, зеленый 24

Допустим, я добавляю еще одно поле, которое на самом деле является тем же человеком, но у них другое написание имени, которое сбрасывает счет, поэтому у меня может быть что-то вроде этого:

ИД ЦВЕТА ИМЯ СЧЕТА

== ===== ====== =====

2 Red Jim 5

2 Red Jimmy 5

3 Red Bob 3

3 Красный Роберт 2

4 Red Johnny 12

4 Red John 12

Я хочу иметь возможность вернуть ID, цвет, имя и количество, но отображать значения, как в первой таблице. Есть ли способ сделать это с помощью идентификатора?

Ответы [ 3 ]

3 голосов
/ 04 марта 2009

Если вы хотите один набор результатов, вам нужно будет опустить имя, как в вашем первом сообщении

SELECT Id, Color, COUNT(*)
FROM YourTable
GROUP By Id, Color

Теперь вы можете получить желаемую функциональность с помощью подзапроса, хотя и не элегантно

SELECT Id, Color Name, (SELECT COUNT(*) 
                        FROM YourTable 
                        Where Id = O.Id 
                            AND Color = O.Color
                       ) AS "Count"
FROM YourTable O
GROUP BY Id, Color, Name

Это должно работать, как вы хотите

3 голосов
/ 04 марта 2009

Попробуйте это: -

 SELECT DISTINCT a.ID, a.Color, a.Name, b.Count
 FROM yourTable
 INNER JOIN (
     SELECT ID, Color, Count(1) [Count] FROM yourTable
     GROUP BY ID, Color
 ) b ON a.ID = b.ID, a.Color = b.Color
 ORDER BY [Count] DESC
0 голосов
/ 04 марта 2009

Попробуйте выполнить подзапрос, чтобы получить количество.

- MarkusQ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...