使用select语句代替tablename创建表



使用select语句代替table_name创建表。

我想创建一个名为B100的表,其中"100"是表"a"中id的最大值

示例:

表A:

id  name
100 harsh
78  Vishal
23  Ivan
34  Hardik

需要创建名为"B{max_value_of_id_in_A}"的表。

表B中的字段是相同的(id,name(;

我尝试的:

create table CONCAT('B', (Select max(id) from A)) 
(
id int,
name varchar(50)
)
要做到这一点,您需要使用动态sql。一个快速而肮脏的例子是:
create table test(id smallint, name varchar(15));
insert test (id, name) values
(98, 'harsh'), (78, 'Vishal'), (23, 'Ivan'), (34, 'Hardik');
declare @sql nvarchar(200);
set @sql = N'create table B' + format((select max(id) from test), 'D3')
+ N'(
id int,
name varchar(50)
);'
select @sql;
exec(@sql);
exec('select * from B098');

请注意,我必须使用动态sql才能在同一批中实际使用该表。正如其他人所建议的那样,你应该重新考虑你选择的道路,原因有很多。也许最重要的是,这需要相当高级的技能——你可能需要很多帮助才能使用你的桌子。您应该咨询您的DBA以获得他们的意见(和许可(。

最新更新