A. 如何讓SELECT 查詢結果額外增加自動遞增序號sqlserver
如何讓SELECT 查詢結果額外增加自動遞增序號
如果數據表本身並不內含自動遞增編號的欄位時,要怎麼做才能夠讓SELECT查詢結果額外增加自動遞增序號呢?下列五種方法供您參考:
USE test;
GO
/* 方法一*/
SELECT 序號= (SELECT COUNT(客戶編號) FROM 客戶 AS LiMing WHERE LiMing.客戶編號<= Chang.客戶編號), 客戶編號,公司名稱 FROM 客戶 AS Chang ORDER BY 1;
GO
/* 方法二: 使用SQL Server 2005 獨有的RANK() OVER () 語法*/
SELECT RANK() OVER (ORDER BY 客戶編號 DESC) AS 序號, 客戶編號,公司名稱FROM客戶;
GO
/* 方法三*/
SELECT 序號= COUNT(*), LiMing.客戶編號, LiMing.公司名稱 FROM 客戶
AS LiMing, 客戶 AS Chang WHERE LiMing.客戶編號>= Chang.客戶編號 GROUP BY
LiMing.客戶編號, LiMing.公司名稱 ORDER BY 序號;
GO
/* 方法四建立一個「自動編號」的欄位,然後將數據新增至一個區域性暫存數據表,然後由該區域性暫存數據表中,將數據選取出來,最後刪除該區域性暫存數據表*/
SELECT 序號= IDENTITY(INT,1,1),管道,程序語言,講師,資歷 INTO #LiMing FROM 問券調查一;
GO
SELECT * FROM #LiMing;
GO
DROP TABLE #LiMing;
GO
/*方法五使用 SQL Server 2005 獨有的ROW_NUMBER() OVER () 語法搭配 CTE (一般數據表表達式,就是 WITH 那段語法)選取序號2 ~ 4 的數據*/
WITH
排序後的圖書 AS (SELECT ROW_NUMBER() OVER (ORDER BY 客戶編號 DESC) AS 序號,
客戶編號,公司名稱 FROM 客戶) SELECT * FROM 排序後的圖書 WHERE 序號 BETWEEN 2 AND 4;
GO
B. 關於SQL數據查詢結果加序號如12345。。。。
擦,什麼情況?當group by 時,怎麼能用rownum呢?肯定查不出數據啊,rownum是虛擬列。。 你這條語句編譯都不通過吧?不是group by 表達式吧?如果想加的話,在外面嵌套一層,具體為:
SELECT ROWNUM AS 序號 ,客戶公司,本年度應收總計 FROM
(SELECT Com.company_name AS 客戶公司, SUM(Cor.Corder_ys) AS 本年度應收總計 FROM (Company Com INNER JOIN Corder Cor ON Com.company_ID = Cor.Company_id) GROUP BY Com.company_name ORDER BY SUM(Cor.Corder_ys) DESC)
C. sql如何在查出的數據前加上編號
<%
'比如果在產品編號如1204前加上DW,讓其編號成為DW1204
'其實就只就是一個對數據進行修改的操作,代碼如下
set rs=server.CreateObject("adodb.recordset")
sql="select * from pro"
rs.open sql,conn,1,3
if not rs.eof then
do while not rs.eof
rs("pcard")="DW"&rs("pcard")
rs.movenext
loop
end if
%>
D. 問題是通過SQL語句,給表添加序號
select concat(concat(t2.nm,'.'),t1.mn)序號,t1.公司ID, from
(select
row_number() over(partition by 公司ID order by 員工名) mn,
公司ID from table) t1
,
(select nn+nn/10 nm,公司ID from(
select 公司ID,rownum nn from
(select
公司ID from table
group by 公司ID
order by 公司ID)
)) t2
where t1.公司ID= t2.公司ID
-------------------------------------------------------------------------
Oracle下測試通過,如果你不是Oracle,請忽略
-------------------------------------------------------------------------
思想,t1表得到的是1 A
2 A
1 B
t2表得到的是1.1 A
2.2 B
把他們第一個欄位拼起來。
ps:sql寫的我自己都覺得煩。。。。。。。。。
E. sql 查詢語句自動增加序號
.使用臨時表實現
SQL的IDENTITY函數可以提供自增的序號,但只能用在帶有INTO table子句的SELECT語句中,所以如果可以使用臨時表的情況下可以使用這種實現方法。
eg:
SELECT IDENTITY(INT,1,1) as seq,field1,field2,...,fieldn INTO tmpTableName FROM srcTableName;
SELECT * FROM tmpTableName;
DROP TABLE tmpTableName;
F. 問一個sql查詢,如何給查詢結果加上序號
SQL Server 下
1、SELECTROW_NUMBER()OVER(ORDERBYID)ROWNU,A1FROMTA1
解說:在這里,TA1是一個表,A1是表中的一個欄位,表的另一個欄位為ID本用於自增這兒用來排序。
SQL Server 中的ROW_NUMBER() 得到一個查詢出的順序,但這個函數要求給出一個查的排序方案,因為SQL Server的存儲是無關順序的。
在Oracle里,本就有rownum。可直接用:
1、SELECTrownum,A1FROMTA1
其它的資料庫可能有別的方案,不一而論。
G. 如何用SQL自動生成序號和分序號
需要用row_number來給分組添加序號。
1、創建測試表,插入數據:
createtabletest(sidint,snamevarchar(20),sclassvarchar(20),scoreint);insertintotestvalues(1,'張三','一年一班',100)insertintotestvalues(2,'李四','一年一班',78)insertintotestvalues(3,'王五','一年一班',67)insertintotestvalues(4,'趙六','一年一班',87)insertintotestvalues(5,'badkano','一年二班',98)insertintotestvalues(6,'網路知道團長','一年二班',99)insertintotestvalues(7,'小小動','一年二班',99)insertintotestvalues(8,'劉備','一年三班',56)insertintotestvalues(9,'張飛','一年三班',67)insertintotestvalues(10,'關羽','一年三班',76)2、要求按照班級總分給出班級排名(即序號),執行語句:
selectrow_number()over(orderbyscoredesc)排名,sclass班級,score總分from(selectsclass,SUM(score)scorefromtestgroupbysclass)t3、查詢結果:
H. 問一個sql查詢,如何給查詢結果加上序號
SQL Server 下
1、SELECTROW_NUMBER()OVER(ORDERBYID)ROWNU,A1FROMTA1
解說:在這里,TA1是一個表,A1是表中的一個欄位,表的另一個欄位為ID本用於自增這兒用來排序。
SQL Server 中的ROW_NUMBER() 得到一個查詢出的順序,但這個函數要求給出一個查的排序方案,因為SQL Server的存儲是無關順序的。
在Oracle里,本就有rownum。可直接用:
1、SELECTrownum,A1FROMTA1
其它的資料庫可能有別的方案,不一而論。
I. 函數編寫 SQL 如何給記錄加序號
有五種方法:
一、需要用臨時表來實現
select IDENTITY(int, 1,1) AS ID_Num,* into #temp from 表
select * from #temp
Drop Table #temp
二、不用臨時表,就必須有排序列,值唯一,做參考:
select (select count(*) from yourtable where col <= A.col) row, * from yourtable A order by col
三、在原表中增加一列來實現
alter table yourtable add ID int identity
select * from yourtable
alter table yourtable drop column ID
四、 使用SQL Server 2005 獨有的RANK() OVER () 語法(測試 客戶編號 也應該值唯一才對)
SELECT RANK() OVER (ORDER BY 客戶編號 DESC) AS 序號, 客戶編號,公司名稱 FROM 客戶
五、
SELECT 序號= COUNT(*), a.客戶編號, b.公司名稱
FROM 客戶 AS a, 客戶AS b WHERE a.客戶編號>= b.客戶編號
GROUP BY a.客戶編號, a.公司名稱
ORDER BY 序號
J. sql語句里如何實現給查詢記錄添加自然序號
通過rownum實現即可。
sql:select rownum , * from tablename where 條件語句。
解釋:rownum是隱藏的,查詢結果默認從1開始編號,所以肯定會是自然編號的,有多少條,編號就到多少。