Sql 使用带有硬编码值的“选择”插入值
我创建了一个表:Sql 使用带有硬编码值的“选择”插入值,sql,Sql,我创建了一个表: create table table1 ( ID NOT NULL, NAME VARCHAR2(20) NOT NULL, dist1 NUMBER(5,3), dist2 NUMBER(5,3), dist3 NUMBER(5,3) ); 表2: select id, name from table 数据: 下面是我尝试过的问题 INSERT INTO table1(ID, NAME, DIST1, DIST2, DIST
create table table1
(
ID NOT NULL,
NAME VARCHAR2(20) NOT NULL,
dist1 NUMBER(5,3),
dist2 NUMBER(5,3),
dist3 NUMBER(5,3)
);
表2:
select id, name from table
数据:
下面是我尝试过的问题
INSERT INTO table1(ID, NAME, DIST1, DIST2, DIST3)
SELECT distinct customer_ref, plan_name
FROM table2
对于DIST1
,DIST2
,DIST3
-需要将以下值与ID
和name
一起插入表1
name1 0.8 0.2 0
name2 1.1 1.2 3.4
name3 4.5 4.2 5.2
如果您使用的是MYSQL,那么可以根据需要转换数据类型,有人可以帮助我如何将值插入SQL Server的
表1
中吗
创建临时表以存储数据
Create table #Temptbl
(
NAME VARCHAR(20) NOT NULL,
dist1 decimal(5,3),
dist2 decimal(5,3),
dist3 decimal(5,3)
)
insert into #Temptbl values('name1', 0.8 , 0.2, 0)
insert into #Temptbl values('name2', 1.1, 1.2, 3.4)
insert into #Temptbl values('name3', 4.5, 4.2, 5.2 )
现在,连接Temp Table和[Table]
以获取数据,并插入table1
INSERT INTO table1(ID, NAME, DIST1, DIST2, DIST3)
select [table].ID,[table].NAME,#Temptbl.dist1,#Temptbl.dist2,#Temptbl.dist3
from [table] INNER JOIN #Temptbl ON [table].NAME = #Temptbl.NAME
现在,从[表1]执行select*,您可以得到所需的结果
ID NAME dist1 dist2 dist3
86 name1 0.800 0.200 0.000
86 name2 1.100 1.200 3.400
86 name3 4.500 4.200 5.200
您可以使用这样的case语句:
CASE name
WHEN 'john' THEN 0.8
WHEN 'mike' THEN 1.1
WHEN 'steve' THEN 4.5
END AS dist1
请看这里:
取决于你有多少名字,这可能会很麻烦。如果您在电子表格中有一个名称列表,那么最好将数据导入到表中,然后执行联接。您可以使用MySQL的“数据填充”之类的工具来自动导入,如果这是一次性的,您也可以使用工作台。您希望在DIST1、DIST2、DIST3插入什么值?您好,您从哪里获取DIST值?它们在另一个表中吗?不,这些是硬编码的值,我没有使用任何表来获取我应该使用的表FORNAME1,0.8,0.2,0 name2-1.1 1.2 3.4,name3-4.5 4.2 5.2
CASE name
WHEN 'john' THEN 0.8
WHEN 'mike' THEN 1.1
WHEN 'steve' THEN 4.5
END AS dist1