[英]How select a row values to be column names of another table?
我是 SQl 的新手。我想知道我是如何完成这项任务的。 我有一个部门表,我想搜索“数学”是否在表中的任何行或列中。 如果有一行带有“数学”,我想创建一个新表并将整行设置为新表的列名。
所以我的新表将以“1004”和“Math”作为新列名。
我已经说过这是评论,我要重复一遍,这看起来和听起来像是一个设计缺陷。 当你强迫自己采用动态解决方案时,我怀疑你最终将需要动态 SQL 来查询表,作为 SQL 的新手,这是一个致命的错误; 您很可能会在您的系统中实施(大)安全漏洞。
但是,是的,你可以这样做。 但是请注意,这是未经测试的并且是伪 SQL,因为您没有定义表名的来源,也没有定义列的数据类型。 因此你需要完成这个,但它应该让你走上正确的道路:
DECLARE @SQL nvarchar(MAX),
@CRLF nchar(2) = NCHAR(13) + NCHAR(10);
SET @SQL = N'CREATE TABLE dbo.' + QUOTENAME({Your Table name}) + N' (' + @CRLF +
(SELECT N' ' + QUOTENAME(DepartmentID) + {Required Data Type} + N',' + @CRLF +
N' ' + QUOTENAME(DepartmentName) + {Required Data Type} + N'' + @CRLF +
N');'
FROM dbo.YourTable
WHERE DepartmentID = 1004);
--PRINT @SQL; --Your debugging best friend
EXEC sys.sp_executesql @SQL;
如果您遇到困难,请使用您最好的朋友; 理解这一点取决于您,如果您不理解,请不要使用它(但是,我已经多次建议过)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.