❶ sql語句inster插入語句
insert into 表名 values (內容,內容,內容);
內容是你有多少個欄位就對應寫多少個內容,空值用null填充
選擇欄位插入
insert into 表名(欄位,欄位) values (內容,內容);
❷ 如何用vb鏈接sql的資料庫
這段代碼寫在模塊中,可以連接一個資料庫
Public
DBConnct
As
New
ADODB.Connection
'連接資料庫
Public
Function
Connt()
As
Boolean
'資料庫連接函數
Dim
splstr
As
String
'App.Path
&
"\db\123.mdb為資料庫路徑
splstr
=
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source="
& App.Path
&
"\db\123.mdb"
& ";Persist
Security
Info=False"
DBConnct.Open
splstr
'連接資料庫
Connt
=
True
End
Function
❸ sql中 怎樣給一列重復的欄位加序號
createtableT
(
mvarchar(10),
nint
)
insertintoTvalues('C',2)
insertintoTvalues('B',1)
insertintoTvalues('C',3)
withct
as
(
selectROW_NUMBER()over(orderbygetdate())asid,m,nfromT
)
select(selectMIN(id)fromctwherem=A.m)As序號,m,nfromcta
❹ sql server 2005 select update 復雜計算 批量更新
--測試環境mssql2008
--建表
CreateTableT
(
idint,
riqidatetime,
daimaVarchar(10),
kaipannumeric(18,2),
zuigaonumeric(18,2),
zuidinumeric(18,2),
zhenfunumeric(18,6)
)
--插入數據
insertintotvalues(1,'2015-10-1','600000',1,7,1,null)
insertintotvalues(2,'2015-10-2','600000',2,8,2,null)
insertintotvalues(3,'2015-10-3','600000',3,9,3,null)
insertintotvalues(4,'2015-10-4','600000',4,10,4,null)
insertintotvalues(5,'2015-10-5','600000',5,11,5,null)
insertintotvalues(6,'2015-10-6','600000',6,12,6,null)
insertintotvalues(7,'2015-10-1','700000',5,13,7,null)
insertintotvalues(8,'2015-10-2','700000',4,14,8,null)
insertintotvalues(9,'2015-10-3','700000',3,15,7,null)
insertintotvalues(10,'2015-10-4','700000',2,16,8,null)
--更新
--思路:按daima分組riqi排序產生記錄號id1,當id1<=3時取null,否則取出id1-3到id1-1記錄zuida的最大值減去zuixiao的最小值,然後除以id1=A.id1-3對應的kaipan,最後把計算結果更新給zhenfu
WithCT
AS
(
select*,ROW_NUMBER()over(partitionbydaimaorderbyriqi)Asid1fromt
)
UpdateTSetzhenfu=B.Rst
From(
Select*,CaseWhenid1<=3thennullelse
Round(
(
(selectmax(zuigao)FromCTWheredaima=A.daimaAndid1betweenA.id1-3andA.id1-1)-
(selectmin(zuidi)FromCTWheredaima=A.daimaAndid1betweenA.id1-3andA.id1-1)
)/(selectkaipanFromCTWheredaima=A.daimaAndid1=A.id1-3),5)
EndAsRst
FromCTA
)BWhereT.id=B.id
/*
計算公式
id=4Select(9-1)/1
id=5Select(10-2)/2
id=6Select(11-3)/3.0
id=10select(15-7)/5.0
其他id的為null
*/
--查看結果
Select*fromT
❺ 求按時間查詢的SQL代碼如何寫
CreateTableT
(
時間datetime,
地點varchar(10),
用時int
)
insertintoTvalues('2015-4-2','A',8)
insertintoTvalues('2015-4-3','B',2)
insertintoTvalues('2015-4-4','A',1)
insertintoTvalues('2015-4-5','A',1)
insertintoTvalues('2015-4-6','B',2)
insertintoTvalues('2015-4-7','A',1)
WithCT
As
(
SelectConvert(datetime,'2015-4-1')As時間,'A'As地點
unionAll
select時間+1,地點FromCTWhere時間<'2015-4-7'
)
SelectA.時間,A.地點,isnull(B.用時,0)As用時FromCTAleftjoinTBonA.時間=B.時間AndA.地點=B.地點
❻ sql sever 2000數據 如何升遷到oracle,大概講一下思路,有幾種方法,謝了。
1. 在ORACLE庫裡面配置好透明網關,可以像訪問ORACLE的表一樣訪問SQLSERVER的數據,然後用類似於CTAS的方法就可以導入到ORACLE了,
2. 用某些工具帶的導出工具,不是很清楚SQLSERVER可用的工具有哪些,把數據導出成SQL語句,首先建表語句,其次INSERT語句,個別建表語句的語法區別手工修改掉,在ORACLE裡面執行就導入了
3. 可以把SQLSERVER的數據保存成某種格式,比如逗號分隔,讓SQLLOADER這種工具可以識別的,工具導入,建表要先手工建好
大概也就是這些方法了,推薦第一種,如果有很多數據表的話。
❼ sql根據逗號統計
createtableT
(
avarchar(10),
bvarchar(100)
)
insertintoTvalues('王某某','101,102')
insertintoTvalues('李某某','102,103')
insertintoTvalues('王某某','101')
insertintoTvalues('李某某','')
insertintoTvalues('李某某','101,102,103')
/*
思路:
先按逗號把B列拆分,然後按A,B分組統計得到如王某某101的個數
最後再拼接形成王某某101(2)102(1)這樣的效果
*/
WithCT
As
(
SELECTA,B,COUNT(*)AsCFROM
(
Selecta,[value]=CONVERT(XML,'<v>'+REPLACE(b,',','</v><v>')+'</v>')
FromT
)
AOUTERAPPLY
(
SelectB=N.v.value('.','varchar(100)')
FromA.[value].nodes('/v')N(v)
)B
WhereB<>''
GroupByA,B
)
SelectA,(
Select''+Convert(Varchar(10),B)+'('+Convert(Varchar(10),C)+')'
FromCTWhereA=D.A
ForXMLPath('')
)
FromCTD
GroupbyA
❽ sql 怎麼把 1.1轉為001001,1.11.1轉為001011001 求大神回答
--建表
CreateTableT
(
AVarchar(10)
)
insertintoTvalues('1')
insertintoTvalues('1.1')
insertintoTvalues('1.11.1')
insertintoTvalues('1.111.1.1')
insertintoTvalues('1.1.1.1.11')
--查詢(先字元串拆分再合並)
WithCT
As
(
SelectA,Right('000'+val,3)AsValFrom
(
SelectA,CAST('<v>'+REPLACE(A,'.','</v><v>')+'</v>'asxml)Asxml
FromT
)aouterapply(Selectx.y.value('.','varchar(100)')asval
Froma.xml.nodes('/v')x(y))b
)
SelectA,(SelectVal+''FromCTWhereA=A.A
ForxmlPath('')
)FromCtAGroupbyA
--或者創建函數
go
CreateFunctionf_splitS(@SourceSqlvarchar(8000))
ReturnsVarchar(8000)
As
Begin
Declare@RstVarchar(8000)=''
Declare@chasvarchar(100)
Whilecharindex('.',@SourceSql)>0
Begin
Set@ch=left(@SourceSql,charindex('.',@SourceSql,1)-1)
Set@Rst=@Rst+Right('000'+@ch,3)
Set@SourceSql=stuff(@SourceSql,1,charindex('.',@SourceSql,1),'')
End
Set@Rst=@Rst+Right('000'+@SourceSql,3)
Return@Rst
End
Select*,dbo.f_splitS(A)fromT
❾ sql按條件修改日期
--建表
CreateTAbleT
(
料號Varchar(10),
單價numeric(18,3),
開始日期date,
結束日期date
)
--插入數據
insertintoTvalues('A',1,'2015-1-1','2016-1-1')
insertintoTvalues('A',1,'2015-2-1','2016-2-1')
insertintoTvalues('A',2,'2015-3-1','2016-3-1')
insertintoTvalues('B',1.5,'2015-2-15','2016-2-15')
insertintoTvalues('B',1.6,'2015-5-15','2016-8-15')
--更新,按料去找到大於當前開始日期的最小開始日期
--也就是找到相同料號的下一個開始做為當前的結束日期
UpdateTSet結束日期=
isnull((Selectmin(開始日期)FromTA
WhereT.料號=A.料號AndA.開始日期>T.開始日期),結束日期)
--方法二,按料號分組開始日期排序產生一個記錄號,然後取下一個記錄號
--的開始日期更新給當前記錄的結束日期
;WithCT
As
(
select*,ROW_NUMBER()over(partitionby料號orderby開始日期)Asid
fromT
)
UpdateCTSet結束日期=A.開始日期
FromCTA
WhereCT.料號=A.料號AndCT.id=A.id-1
--查看
select*fromT