A. sql语句复杂排序问题,在线请高手解答
CREATETABLE#temp(
TYPE char(1),
INDINAME INT,
INDIVALUEINT
);
INSERTINTO#tempVALUES('A',1001,6);
INSERTINTO#tempVALUES('A',1001,2);
INSERTINTO#tempVALUES('A',1002,3);
INSERTINTO#tempVALUES('A',1003,5);
INSERTINTO#tempVALUES('B',1001,1);
INSERTINTO#tempVALUES('B',1002,4);
INSERTINTO#tempVALUES('B',1002,3);
INSERTINTO#tempVALUES('B',1003,6);
INSERTINTO#tempVALUES('C',1001,4);
INSERTINTO#tempVALUES('C',1002,6);
INSERTINTO#tempVALUES('C',1003,2);
GOSELECT
temp.TYPE,
temp.INDINAME,
MAX(temp.INDIVALUE)ASINDIVALUE
FROM
#temptemp
JOIN
(
SELECT
t.TYPE,
ROW_NUMBER()OVER(ORDERBYMAX(INDIVALUE)DESC)ASxNo
FROM
#tempt
WHERE
t.INDINAME=1001
GROUPBY
t.TYPE
)SubQuery1001
ON(temp.TYPE=SubQuery1001.TYPE)
GROUPBY
SubQuery1001.xNO,
temp.TYPE,
temp.INDINAME
ORDERBY
SubQuery1001.xNO,
temp.INDINAME
GO
TYPEINDINAMEINDIVALUE
--------------------------
A10016
A10023
A10035
C10014
C10026
C10032
B10011
B10024
B10036
(9行受影响)
SELECT
temp.TYPE,
temp.INDINAME,
MAX(temp.INDIVALUE)ASINDIVALUE
FROM
#temptemp
JOIN
(
SELECT
t.TYPE,
ROW_NUMBER()OVER(ORDERBYMAX(INDIVALUE)DESC)ASxNo
FROM
#tempt
WHERE
t.INDINAME=1003
GROUPBY
t.TYPE
)SubQuery1001
ON(temp.TYPE=SubQuery1001.TYPE)
GROUPBY
SubQuery1001.xNO,
temp.TYPE,
temp.INDINAME
ORDERBY
SubQuery1001.xNO,
temp.INDINAME
GO
TYPEINDINAMEINDIVALUE
--------------------------
B10011
B10024
B10036
A10016
A10023
A10035
C10014
C10026
C10032
(9行受影响)
B. 请教sql语句排序问题
id的大小就代表时间的先后,所以,先按id排,再按号码排
select id,电话号码,拨号时间 from 表名 order by id,电话号码;
C. SQL语句的排序问题
似乎是没有直接的方法,但你可以采用变通的方法。
先将包含指定字符的记录选出,然后再选出剩余的记录。分别排序,再联合就可以实现。如下:
select a,b from XX where a like '%nn%' order by b
union all
select a,b from XX where a not like '%nn%' order by b
D. SQL排序语句遇到的奇怪问题
问题1:没有ORDER BY,系统会根据存贮的次序来排序,就不一定是你的预期了。
问题2:大概是你没有ORDER BY的结果
问题3:起作用的。
E. sql中排序要怎么写
1.语法:
SELECT "栏位名"
FROM "表格名"
[WHERE "条件"]
ORDER BY "栏位名" [ASC, DESC];
2.注意事项:先分组再排序,运用的是ORDER BY,后面加的是你要按什么排序,如果按照升序可以不用写或者加上ASC;如果是降序,要加上DESC。
3.例子:SELECT id FROM user ORDER BY id;
F. SQL查询语句排序问题,请高手指点
select*from(
selectyebk.fzdm4,left(yebk.fzdm5,1),fzxzl.fzmc,fzxzl.fzdm,sum(yebk.yj1)+sum(yebk.yj2)+sum(yebk.yj3)+sum(yebk.yj4)+sum(yebk.yj5)+sum(yebk.yj6)+sum(yebk.yj7)+
sum(yebk.yj8)+sum(yebk.yj9)+sum(yebk.yj10)+sum(yebk.yj11)+sum(yebk.yj12)+sum(yebk.yj13)-sum(yebk.yd1)-sum(yebk.yd2)-sum(yebk.yd3)-sum(yebk.yd4)-sum(yebk.yd5)
-sum(yebk.yd6)-sum(yebk.yd7)-sum(yebk.yd8)-sum(yebk.yd9)-sum(yebk.yd10)-sum(yebk.yd11)-sum(yebk.yd12)-sum(yebk.yd13)
fromgl_fzxzlfzxzl,gl_yebkyebkwhere
yebk.gsdm='004'andyebk.kjnd='2014'andyebk.zth='004'
andyebk.gsdm=fzxzl.gsdmandyebk.kjnd=fzxzl.kjnd
andyebk.fzdm4=fzxzl.fzdm
andyebk.fzdm5like'3%'
groupbyyebk.fzdm4,fzxzl.fzmc,fzxzl.fzdm,left(yebk.fzdm5,1)
)astorderbyfzdm4asc
G. SQL查询并排序问题
select * from 表 where 字段 in (x1,x2,x3,x4.....) order by 字段 ASC/DESC
此中排序字段是索引条件中字段,ASC为升序,DESC为降序,此中的排列会以X1,X2,X3排序,但X1可能有很多数据,如果在X1内部排序,请加上第二排序。
select * from 表 where 字段 in (x1,x2,x3,x4.....) order by 字段 ASC/DESC,字段2 ASC/DESC
此表达式是在X1,X2等排序的基础上再按字段2进行排序!
我就不明白,如何是多数据,X1,X2等又包含多个条记录,你就不想用Group呢?
你想看一下group by 的使用方法,对时可以对分组条件进行限定,关键词是having,使用方法类where,但与where是有区别的!
H. SQL语句排序的问题
你的写法是错误的,按照你的写法在对n进行降序排序时,第一个m升序排序结果会失效,等于最终只读n做了降序排序,而且你的语句本身也比较冗余。
正确的写法是:
SELECT * FROM a ORDER BY m ASC ,n DESC;
我们可以通过一些实例来具体分析order by 子句的用法:
假设有Orders 表:
注意:在以上的结果中有两个相等的公司名称 (W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。
I. sql语句查询排序问题
createtablea
(idint,namevarchar(20))
go
createtableb
(bidint,nrvarchar(20))
go
insertintoaselect1,'哈哈'Unionall
select2,'呵呵'Unionall
select3,'喵'
insertintobselect2,'q'Unionall
select2,'w'Unionall
select2,'e'Unionall
select1,'r'Unionall
select1,'u'
selectid,name,isnull((selectCOUNT(1)frombwherebid=a.id),0)fromaorderby3desc
J. sql语句降序排列
你好,很高兴回答你的问题。
sql通过order by来控制排序。
比如select * from 表名 order by ID asc表示按照id列升序,order by ID desc 则表示按照id降序。
如果不指明是asc还是desc则是默认为asc升序。
如果有帮助到你,请点击采纳。