繁体   English   中英

来自存储在表中的值的 SQL 动态 SELECT 语句

[英]SQL Dynamic SELECT statement from values stored in a table

我已经研究了几天,感觉自己在兜兜转转。 我有 SQL 的基本知识,但有很多我不了解的领域。

我有一个表,用于存储数据库中所有其他表的名称和字段。

tblFields
===================================================

TableName      FieldName     BookmarkName  
---------------------------------------------------
Customer       FirstName     CustomerFirstName  
Customer       LastName      CustomerLastName  
Customer       DOB           CustomerDOB  

我想写一个像下面这样的SELECT语句,但我无法让它工作:

SELECT (SELECT [FieldName] FROM [TableName]) FROM tblFields

这可能吗? 我开发的应用程序需要用户自定义报告。

如果我理解你想要做什么,我认为这会对你有所帮助。 它并不漂亮,适用于 SQL Server 2005 及更高版本,但也许这就是您要寻找的:

declare @tableName nvarchar(100)
declare @sqlQuery nvarchar(max)
declare @fields varchar(500)
set @tableName = 'YourTableName'
set @fields = ''
select @fields = @fields + QUOTENAME(t.fieldname) + ',' from (
select distinct fieldname from tblfields where tablename = @tableName)t


set @sqlQuery = 'select ' + left(@fields, LEN(@fields)-1) + ' from ' + QUOTENAME(@tableName)

execute sp_executesql @sqlQuery

编辑:正如马丁建议的那样,我进行了编辑,以便列和表名使用 QUOTENAME

如果我正确理解您正在尝试做什么,那么您最好将其作为程序中的两个单独查询来执行。 一个获取您想要选择的字段,然后在您的程序中使用这些字段来构建实际获取数据的第二个查询。

如果必须完全在 SQL 中完成,那么您需要告诉我们您使用的是什么数据库。 如果是 SQL Server,您可能能够在第一个查询上使用游标来构建第二个查询,然后您使用 sp_executesql 存储过程执行该查询。 但是建议在 SQL 之外执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM