[英]How can I get table name as column from the current table in SQL Server
我正在尝试找到一种方法来将“表名”作为SQL Server 2012中当前表的列
SELECT
'School1.dbo.Person', Age, COUNT(Age)
FROM
School1.dbo.Person
GROUP BY
Age
UNION ALL
SELECT
'School2.dbo.Person', Age, COUNT(Age)
FROM
School2.dbo.Person
GROUP BY
Age
因为我在每个select语句的第一列中对表名进行硬编码,所以没有多大意义,是否可以动态地在第一列中获取表名?
欣赏你的想法!
RAP
您如何将表名作为变量传递?
看一个这个简单的例子(我没试过去运行它)。
declare @tableName1 varchar(max) = 'School1.dbo.Person';
declare @tableName2 varchar(max) = 'School2.dbo.Person';
declare @sql1 nvarchar(max) = N'SELECT ''' + @tableName1 + ''', Age, COUNT(Age) FROM ' + @tableName1 + ' GROUP BY Age';
declare @sql2 nvarchar(max) = N'SELECT ''' + @tableName2 + ''', Age, COUNT(Age) FROM ' + @tableName2 + ' GROUP BY Age';
declare @table1 as table(tabName varchar(max), Age int, AgeCount int);
declare @table2 as table(tabName varchar(max), Age int, AgeCount int);
insert into @table1 execute sp_executesql @sql1;
insert into @table2 execute sp_executesql @sql2;
select * from @table1
union all
select * from @table2
这将显示数据库中所有表中的所有字段名称。
USE your_DB
GO
SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%ticker%'
ORDER BY schema_name, table_name;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.