当前位置:首页 » 编程语言 » sqlctas
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlctas

发布时间: 2022-05-06 00:27:08

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