#table @table 的區別
#定義的表不drop不會釋放
@定義的表會自動釋放
建立#table有兩種方式:
1.select * into #t from tablename
2.create table #tablename(
coumnname1 nvarchar(36)
)建立@table也有兩種方式用法同上
1.select * into @v from tablename
2.declare @v table
(columnname1 int ,
columnname 2 nvarchar(36)
)判斷語句
declare @flag int
set @flag =0
if @flag=0
begin
print('我是0');
end
else if @flag=1
begin
print('我是1');
end
用分組篩選批量重複
row_number over()生成的列可以作為查詢條件。實現方式:
在sqlserver下編寫語句:
select * from (
select row_number() over(partition by projectname,businessmodelname,city,mtime order by versionstarttime desc) as rownum ,* from (
select indicatorvalue,versionstarttime,projectname,businessmodelname,city,month(statisticalcycle) mtime from dbo.incometargetact where
planactdatatype=2 and statisticalcycle >=cast(cast(year(getdate()) as varchar(4)) as datetime)
and validstatus= 1 and versionendtime is null and organizationname=@orgname ) as t
)as at where rownum = 1
臨時表繫結資料
--寫字樓計畫監控declare @plan table (
businessname [nvarchar](36), --
planvalue decimal(18,4), --
plantotalvalue decimal(18,4), --
warnvalue decimal(18,4) --
)--繫結第一列
insert into @plan (
column
)select cname from table
--繫結第二列
update @plan
set planvalue =(select indicatorvalue from #t t where t.bussinessmodename =businessname and t.indicatorname='我')
--繫結第三列
update @plan
set plantotalvalue =(select indicatorvalue from #t t where t.bussinessmodename =businessname and t.indicatorname='實')
--繫結第四列
update @plan
set warnvalue =(select indicatorvalue from #t t where t.bussinessmodename =businessname and t.indicatorname='自')
SQL 邏輯處理
自己推理出來的 sql邏輯處理 判斷分情況執行不同的sql 值得收藏 select decode stat,e select ok from dual f select no from dual from select case when aa bb 0 then e else f end stat...
SQL 語句的執行邏輯
本文的 sql語句執行,主要考察的是 dql操作。因為查詢操作,是資料庫使用中最為頻繁的操作,其他如 insert update delete也都會依賴查詢操作。如果能對邏輯查詢的執行順序比較熟悉,那麼分析 sql語句也將會事半功倍。通常,乙個複雜的 sql查詢語句不外乎包含下面的一些操作,共 11...
sql常用sql語句
1 查詢某個庫中所有的表名字 select name from sysobjects where xtype u and name dtproperties order by name 2 得到資料庫中所有使用者檢視 select name from sysobjects where xtype v...