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升序。
如果有幫助到你,請點擊採納。