2017-07-17 129 views
-2

我有一個現有的SQL命令,變量,我想有些生成/可變列添加到它,試圖全面加入沒有條件,但沒有成功,添加列到現有的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 

樣品結果,

enter image description here

+0

其中SQL數據庫? – maSTAShuFu

+0

我正在使用mssql – Mert

+0

Mysql不支持GetDate(),NewID()。它應該是SQL Server –

回答

1

這裏需要使用動態查詢。

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 
+0

你正在切斷「SELECT」併合併爲文本,是一個解決方案。可能會工作,但我不是很舒服的文字操作。它可能會導致複雜的SQL查詢中不需要/意​​外的結果。我會等待更好的解決方案,但這只是迄今爲止的有效答案。非常感謝你。 – Mert

+0

*它可能會導致複雜的SQL查詢中不需要/意​​外的結果* - 它不應該。這就是我沒有替代'SELECT'的唯一目的,只剝奪了原始查詢開始處的那個。我沒有看到任何其他的方式來做到這一點沒有文字操作和動態查詢。順便問題暫停,所以你不能指望更多的答案。 : - | – niksofteng

+0

你可以理解這個問題,但是一些白癡不能因爲他們的愚蠢而把話題轉移到話題之外,即使我做了一切讓他們理解我的話題被阻止了。它非常簡單,如果別人能理解這是你的問題,如果你不能,而不是操作系統。這些人讓我瘋狂。 – Mert

0

該查詢應該工作。

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) 
+0

sql是以變量形式出現的,我不能操縱它,你應該編寫一個命令來包裝它。 – Mert

+0

是sql多值變量還是單個?這是你如何插入多個值@Mert –

+0

sql返回多個結果 – Mert