SQL сортировка сгруппированных данных - PullRequest
0 голосов
/ 10 мая 2011

Я ищу способ вернуть данные в очень специфическом порядке из базы данных Access, используя SQL.Я хочу найти самую низкую частоту, перечислить все системы в порядке частот, начиная с системы с самой низкой частотой, затем выполнить ту же операцию на следующей самой высокой частоте и т. Д.

Вот как я хотел бывыход будет.(Разрывы строк просто для наглядности порядка сортировки, я добавлю их в коде программы позже.)

System   Freq
------  ------
FM        100
FM        120
FM        150

AM        110
AM        150
AM        170

CW        160
CW        180
CW        200

Возможно ли что-то подобное с SQL?Любая помощь будет принята с благодарностью.Спасибо.

Ответы [ 3 ]

3 голосов
/ 10 мая 2011

Это то, что вы хотите?

Select System, Freq
from YourTableName
Order By System, Freq

Или, если я правильно перечитал ваш вопрос, возможно, это то, что вам нужно (извините за очень обратную сторону конверта)

Select  YT1.[System], YT1.[Freq]
From    YourTable YT1
        Inner Join (
            Select [System], Min(Freq) MinFreq
            From    YourTable YT2
            Group By [System]
        ) YT3 on YT1.[System] = YT3.[System]
Order By YT3.[MinFreq], YT1.[System], YT1.Freq
0 голосов
/ 10 мая 2011

Общий ответ - да, укажите псевдоним для вычисляемого столбца Freq и порядок как по системе, так и по Freq: см. Пример сортировки по нескольким строкам здесь .

0 голосов
/ 10 мая 2011

Без более четкой картины ваших исходных данных это выглядит так, как будто это простой порядок по нескольким столбцам:

SELECT [System], [Freq]
FROM [TableName]
ORDER BY [Freq], [System]
...