SQL分组的分组数据

时间:2011-05-10 19:17:06

标签: sql database ms-access sorting sql-order-by

我正在寻找一种使用SQL从Access数据库以非常特定的顺序返回数据的方法。我想寻找最低频率,从最低频率的系统开始按频率顺序列出所有系统,然后在下一个最高频率上进行相同的操作,依此类推。

这就是我想要输出的方式。 (换行符只是为了便于查看排序顺序,我稍后会在程序代码中添加它们。)

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

AM        110
AM        150
AM        170

CW        160
CW        180
CW        200

SQL可以这样吗?任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:3)

这是你想要的吗?

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

答案 1 :(得分:0)

一般答案是肯定的,为您的Freq计算列提供别名,并按系统和频率排序:查看多行排序here的示例。

答案 2 :(得分:-1)

如果没有更清晰的源数据图片,这看起来只是在多列上的简单顺序:

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