首页 > 解决方案 > 在子查询中获取sql server中的列值

问题描述

以下是我的查询,我需要在选择子查询中列值而不是我得到列名 @Temp = 临时表

insert into @Temp([dateTime],Reading) 
values (@startDate,(select top(1) @trendId from TABLENAME where deviceTimestamp >= @startDate and deviceTimestamp < @tempdt  order by deviceTimestamp desc))

ALTER PROCEDURE ProcName 
#trendId as nvarchar(max), 
#startDate as datetime, 
#endDate as datetime 
AS 
BEGIN 
  declare #stt varchar(200) = 'select deviceTimestamp,' + #trendId + ' '+'as reading 
  from TableName 
  where deviceTimestamp >= '+#startDate+'and deviceTimestamp < '+#endDate+' 
  order by deviceTimestamp desc' 

exec(#stt)END 

我得到错误:

从字符串转换日期和/或时间时转换失败。)

标签: sqlsql-serversql-server-2012

解决方案


DECLARE @sqlCommand varchar(1000)
DECLARE @columnList varchar(75)
DECLARE @city varchar(75)

SET @columnList = 'AddressID, AddressLine1, City'
SET @city = '''London'''
SET @sqlCommand = 'SELECT ' + @columnList + ' FROM Person.Address WHERE City = ' + @city

EXEC (@sqlCommand)

检查此链接。动态 SQL 似乎是您需要的,您可以将表名、表列动态传递给您的查询。因此,您将能够将列名作为参数变量传递。否则,您只需选择纯文本作为记录。


推荐阅读