向现有sql查询中添加列

向现有sql查询中添加列,sql,sql-server,Sql,Sql Server,我有一个现有的sql命令作为变量,我想向其中添加一些生成/变量列,尝试了无条件的完全联接,但未成功 sql正在动态更改,将作为命令的输入提供。一些例子,它可能是什么和答案应该适用于所有人 sql = 'SELECT X FROM Y WHERE A = 1' sql = '(SELECT X FROM F WHERE A = 2)' sql = 'SELECT X FROM G WHERE B = (SELECT D FROM F WHERE B = 5)' sql = 'SELECT X FR

我有一个现有的sql命令作为变量,我想向其中添加一些生成/变量列,尝试了无条件的完全联接,但未成功

sql正在动态更改,将作为命令的输入提供。一些例子,它可能是什么和答案应该适用于所有人

sql = 'SELECT X FROM Y WHERE A = 1'
sql = '(SELECT X FROM F WHERE A = 2)'
sql = 'SELECT X FROM G WHERE B = (SELECT D FROM F WHERE B = 5)'
sql = 'SELECT X FROM H WHERE G = 0'
sql = 'SELECT X FROM P WHERE W = 2'
sql = 'SELECT X FROM Z WHERE J = 9'


SELECT NEWID(), GETDATE(), sql

INSERT INTO Foo (A, B ,C) SELECT NEWID(), GETDATE(), sql
样本结果


这个查询应该可以工作

INSERT INTO Foo (A, B ,C) 
SELECT NEWID(),GETDATE(), X FROM Y
动态查询:-

Declare @sql varchar(max)= 'select val from sumavg'

SET @sql=REPLACE(@sql,'select','select GETDATE(), NEWID(),')
EXEC(@sql )

您需要在这里使用动态查询

DECLARE @sql varchar(max) = 'SELECT X FROM Y WHERE A = 1' -- initial input
SET @sql = 'SELECT NEWID(), GETDATE(), ' + LTRIM((SUBSTRING(@sql, 7, LEN(@sql) - 6)))
SET @sql = 'INSERT INTO Foo (A, B, C) ' + @sql 

--EXEC(@sql)
print @sql
输出可执行查询:

INSERT INTO Foo (A, B, C) SELECT NEWID(), GETDATE(), X FROM Y WHERE A = 1

哪个sql数据库?我使用的MSSQLSQL不支持GetDate、NewID。它应该是SQL Server祝你好运。。。这是一个很长的路要走,你可以提供一个完全工作的简化的例子,你到目前为止。sql=从Y中选择X-这是动态变量/输入不是有效的sql。我似乎不是唯一一个不明白你想说什么的人。sql是作为变量出现的,我无法处理它,你应该写一个命令来包装它。sql是多值变量还是单值变量?这就是插入多个值的方式@Mertsql返回多个结果sql是动态命令,我给出的只是一个示例,您不能硬编码。@Mert如果您提供动态查询,我可以帮助您。您正在切断选择并合并为文本,这是一个解决方案。可能会工作,但我不是很舒服的文字操纵。它可能会在复杂的sql查询中导致不需要的/意外的结果。我会等待更好的解决方案,但这是目前为止唯一有效的答案。非常感谢。这可能会在复杂的sql查询中导致不必要的/意外的结果-不应该。这就是我没有替换SELECT的目的,只是去掉了原始查询开头的那个。如果没有文本操作和动态查询,我看不到任何其他方法可以做到这一点。顺便说一句,这个问题暂时搁置,所以你们不能期待更多的答案-|你可以理解这个问题,但有些白痴不能把话题转到话题外,因为他们太愚蠢了,即使我尽了一切努力让他们明白我的话题被屏蔽了。这很简单,如果其他人能理解这是你的问题,如果你不能,不是老年退休金计划。这些人让我发疯。