① sql 合並表 2個表都有日期和金額 如何將裡面的值合並 並且按照日期排序組成新表日期格式201101 201102
你對資料庫的理解有問題
資料庫信息不是順序的,你要用相應的語句來給她排序輸出
所以用union加上sort函數就能實現你的排序要求,做個視圖就行,你組成新表,原來的A表B表有更新,你還要重新處理,視圖自動就是最新結果
② asp sql語句排序問題
你的request("id")
有默認值嗎?第一次打開的時候,是按什麼排序呢,如果不指定默認值,那sql語句就是
sql="select
*
from
aveprotest
order
by
(這里是空的)
desc"
③ SQL語句排序排序問題(很難)
求跟據STAT欄位逗號後的值(即最後一個值)排序的方法
如果無逗號(即只有一個值)時就用當前值.
解:根據題意,只要取出字元串最後的一個數字,便可排序,自定義函數取stat欄位的最後數字:
函數如下:
create function testaa(@sec varchar(1000))
returns varchar(2000)
/*
====================================================
功能:取出字元串的最後的數字
====================================================
*/
as
begin
declare @str varchar(2000)
set @str=''
declare @i int
set @i=0
declare @str1 varchar(100),@str2 varchar(100)
set @str1=''
while @i<=len(@sec)
begin
set @str1=substring(@sec,@i,1)
if @str1=','
begin
set @str=''
end
else
begin
set @str=@str+substring(@sec,@i,1)
end
set @i=@i+1
end
return @str
end
-----------------------------------
最後結果:
select name,stat,dbo.testaa(stat) from table
order by dbo.testaa(stat) desc
④ 求一sql查詢語句,查詢出表裡存在 列sort='1'和 列sort='6'的語句
試試這個
select * from 表名 where exists(select * from 表名 where sort='1') and exists(select * from 表名 where sort='6') and (sort in('1','6'))
⑤ sql sort和order by的區別
你好,你可以參考一下這個文檔
http://blog.csdn.net/shine0181/article/details/17807345
希望你的問題能解決。
⑥ sql增刪改查的基本代碼
adoquery1.Fielddefs[1].Name; 欄位名
dbgrid1.columns[0].width:=10; dbgrid的欄位寬度
adoquery1.Fields[i].DataType=ftString 欄位類型
update jb_spzl set kp_item_name=upper(kp_item_name) 修改資料庫表中某一列為大寫
select * from master.dbo.sysobjects ,jm_barcode.dbo.users 多庫查詢
adotable1.sort:='欄位名稱 ASC' adotable排序
SQL常用語句一覽
sp_password null,'新密碼','sa' 修改資料庫密碼
(1)數據記錄篩選:
sql="select * from 數據表 where 欄位名=欄位值 orderby 欄位名 [desc] "
sql="select * from 數據表 where 欄位名 like '%欄位值%' orderby 欄位名 [desc]"
sql="select top10 * from 數據表 where 欄位名 orderby 欄位名[desc]"
sql="select * from 數據表 where 欄位名 in('值1','值2','值3')"
sql="select * from 數據表 where 欄位名 between 值1 and 值 2"
(2)更新數據記錄:
sql="update 數據表 set 欄位名=欄位值 where 條件表達式"
sql="update 數據表 set 欄位1=值1,欄位2=值2……欄位n=值n where 條件表達式"
(3)刪除數據記錄:
sql="delete from 數據表 where 條件表達式"
sql="delete from 數據表 "(將數據表所有記錄刪除)
(4)添加數據記錄:
sql="insert into 數據表(欄位1,欄位2,欄位3…) values(值1,值2,值3…)"
sql="insert into 目標數據表 select * from 源數據表"(把源數據表的記錄添加到目標數據表)
(5)數據記錄統計函數:
AVG(欄位名)得出一個表格欄平均值
COUNT(*|欄位名)對數據行數的統計或對某一欄有值的數據行數統計
MAX(欄位名)取得一個表格欄最大的值
MIN(欄位名)取得一個表格欄最小的值
SUM(欄位名)把數據欄的值相加
引用以上函數的方法:
sql="selectsum(欄位名)as別名from數據表where條件表達式"
setrs=conn.excute(sql)
用rs("別名")獲取統的計值,其它函數運用同上。
(5)數據表的建立和刪除:
CREATETABLE數據表名稱(欄位1類型1(長度),欄位2類型2(長度)……)
例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ())
DROPTABLE數據表名稱(永久性刪除一個數據表)
4.記錄集對象的方法:
rs.movenext將記錄指針從當前的位置向下移一行
rs.moveprevious將記錄指針從當前的位置向上移一行
rs.movefirst將記錄指針移到數據表第一行
rs.movelast將記錄指針移到數據表最後一行
rs.absoluteposition=N將記錄指針移到數據表第N行
rs.absolutepage=N將記錄指針移到第N頁的第一行
rs.pagesize=N設置每頁為N條記錄
rs.pagecount根據pagesize的設置返回總頁數
rs.recordcount返回記錄總數
rs.bof返回記錄指針是否超出數據表首端,true表示是,false為否
rs.eof返回記錄指針是否超出數據表末端,true表示是,false為否
rs.delete刪除當前記錄,但記錄指針不會向下移動
rs.addnew添加記錄到數據表末端
rs.update更新數據表記錄
SQL語句的添加、刪除、修改雖然有如下很多種方法,但在使用過程中還是不夠用,不知是否有高手把更多靈活的使用方法貢獻出來?
添加、刪除、修改使用db.Execute(Sql)命令執行操作
╔----------------╗
☆ 數據記錄篩選 ☆
╚----------------╝
注意:單雙引號的用法可能有誤(沒有測式)
Sql = "Select Distinct 欄位名 From 數據表"
Distinct函數,查詢資料庫存表內不重復的記錄
Sql = "Select Count(*) From 數據表 where 欄位名1>#18:0:0# and 欄位名1< #19:00# "
count函數,查詢數庫表內有多少條記錄,「欄位名1」是指同一欄位
例:
set rs=conn.execute("select count(id) as idnum from news")
response.write rs("idnum")
sql="select * from 數據表 where 欄位名 between 值1 and 值2"
Sql="select * from 數據表 where 欄位名 between #2003-8-10# and #2003-8-12#"
在日期類數值為2003-8-10 19:55:08 的欄位里查找2003-8-10至2003-8-12的所有記錄,而不管是幾點幾分。
select * from tb_name where datetime between #2003-8-10# and #2003-8-12#
欄位裡面的數據格式為:2003-8-10 19:55:08,通過sql查出2003-8-10至2003-8-12的所有紀錄,而不管是幾點幾分。
Sql="select * from 數據表 where 欄位名=欄位值 order by 欄位名 [desc]"
Sql="select * from 數據表 where 欄位名 like '%欄位值%' order by 欄位名 [desc]"
模糊查詢
Sql="select top 10 * from 數據表 where 欄位名 order by 欄位名 [desc]"
查找資料庫中前10記錄
Sql="select top n * form 數據表 order by newid()"
隨機取出資料庫中的若干條記錄的方法
top n,n就是要取出的記錄數
Sql="select * from 數據表 where 欄位名 in ('值1','值2','值3')"
╔----------------╗
☆ 添加數據記錄 ☆
╚----------------╝
sql="insert into 數據表 (欄位1,欄位2,欄位3 …) valuess (值1,值2,值3 …)"
sql="insert into 數據表 valuess (值1,值2,值3 …)"
不指定具體欄位名表示將按照數據表中欄位的順序,依次添加
sql="insert into 目標數據表 select * from 源數據表"
把源數據表的記錄添加到目標數據表
╔----------------╗
☆ 更新數據記錄 ☆
╚----------------╝
Sql="update 數據表 set 欄位名=欄位值 where 條件表達式"
Sql="update 數據表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件表達式"
Sql="update 數據表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n "
沒有條件則更新整個數據表中的指定欄位值
╔----------------╗
☆ 刪除數據記錄 ☆
╚----------------╝
Sql="delete from 數據表 where 條件表達式"
Sql="delete from 數據表"
沒有條件將刪除數據表中所有記錄)
╔--------------------╗
☆ 數據記錄統計函數 ☆
╚--------------------╝
AVG(欄位名) 得出一個表格欄平均值
COUNT(*|欄位名) 對數據行數的統計或對某一欄有值的數據行數統計
MAX(欄位名) 取得一個表格欄最大的值
MIN(欄位名) 取得一個表格欄最小的值
SUM(欄位名) 把數據欄的值相加
引用以上函數的方法:
sql="select sum(欄位名) as 別名 from 數據表 where 條件表達式"
set rs=conn.excute(sql)
用 rs("別名") 獲取統的計值,其它函數運用同上。
╔----------------------╗
☆ 數據表的建立和刪除 ☆
╚----------------------╝
CREATE TABLE 數據表名稱(欄位1 類型1(長度),欄位2 類型2(長度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 數據表名稱 (永久性刪除一個數據表)
╔--------------------╗
☆ 記錄集對象的方法 ☆
╚--------------------╝
rs.movenext 將記錄指針從當前的位置向下移一行
rs.moveprevious 將記錄指針從當前的位置向上移一行
rs.movefirst 將記錄指針移到數據表第一行
rs.movelast 將記錄指針移到數據表最後一行
rs.absoluteposition=N 將記錄指針移到數據表第N行
rs.absolutepage=N 將記錄指針移到第N頁的第一行
rs.pagesize=N 設置每頁為N條記錄
rs.pagecount 根據 pagesize 的設置返回總頁數
rs.recordcount 返回記錄總數
rs.bof 返回記錄指針是否超出數據表首端,true表示是,false為否
rs.eof 返回記錄指針是否超出數據表末端,true表示是,false為否
rs.delete 刪除當前記錄,但記錄指針不會向下移動
rs.addnew 添加記錄到數據表末端
rs.update 更新數據表記錄
%:代表任意長的一段字元 _ :代表一個字元 [a,b,c,d]:a、b、c、d中的任意一個 [^a,b,c,d]:不在a、b、c、d中的任意一個
⑦ SQL高手進
1.創建庫
CREATE DATABASE [SiteFactory] ON PRIMARY
( NAME = N'SiteFactory', FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\SiteFactory.mdf' , SIZE = 7168KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'SiteFactory_log', FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\SiteFactory_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
COLLATE Chinese_PRC_CI_AS
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'SiteFactory', @new_cmptlevel=90
GO
2. 查詢:Select * from 表名
更新:update 表名 set 欄位名=值 where 條件
刪除: Delete from 表名 where 條件
插入:Insert into 表名(欄位1,欄位2)values(值1,值2)
3.創建存儲過程
CREATE PROCEDURE <Procere_Name, sysname, ProcereName>
-- Add the parameters for the stored procere here
<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procere here
SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO
調用存儲過程 exec 存儲過程名稱 參數1,參數2
5.游標使用
Declare tb Cursor LOCAL
FOR
select DeptID from Department where ParentID=@DeptID order by DeptID
set @level =@level+1
Open TB
Fetch tb into @DeptID
While @@FETCH_STATUS=0
BEGIN
set @sort = @sort+1
INSERT @t_Level VALUES(@DeptID,@level,@sort)
IF @@NESTLEVEL<32
BEGIN
INSERT @t_Level SELECT * FROM func_AdminDeptList(@DeptID,@level,@sort)
SET @sort=@sort+@@ROWCOUNT
END
FETCH tb INTO @DeptID
END
RETURN
6. 創建函數
CREATE FUNCTION <Table_Function_Name, sysname, FunctionName>
(
-- Add the parameters for the function here
<@param1, sysname, @p1> <data_type_for_param1, , int>,
<@param2, sysname, @p2> <data_type_for_param2, , char>
)
RETURNS
<@Table_Variable_Name, sysname, @Table_Var> TABLE
(
-- Add the column definitions for the TABLE variable here
<Column_1, sysname, c1> <Data_Type_For_Column1, , int>,
<Column_2, sysname, c2> <Data_Type_For_Column2, , int>
)
AS
BEGIN
-- Fill the table variable with the rows for your result set
RETURN
END
GO
⑧ SQL SERVER,圖在下面,求最後一列的值
--沒有id 所以根據dt做關聯,如果表裡面有id請自行替換
updatetmainsettmain.sort=t2.sort1fromtabletMain,(
elseRANK()over(partitionbyt.value,cast(t.dtasint)-t.rownumorderbyt.dt)endassort1,*from
(selectROW_NUMBER()over(partitionbyvalueorderbydt)asrownum,*fromtable)t
)t2
where
tmain.dt=t2.dt