使用复杂SQL的SQL插入

使用复杂SQL的SQL插入,sql,insert,subquery,expression,Sql,Insert,Subquery,Expression,我曾尝试使用insert into语句和复杂的sql命令。 我有两个错误: 在此上下文中不允许子查询。仅标量表达式 “和”附近语法不正确“)” 声明: Insert into [TestSystem2].[dbo].[Test_Software_Mandant_Status] ([SW_IDN], [Mandant_IDN], Software_Status], [UserName], [TimeStamp]) values (15000, 9999, (SELECT [Software_

我曾尝试使用insert into语句和复杂的sql命令。 我有两个错误:

在此上下文中不允许子查询。仅标量表达式 “和”附近语法不正确“)”

声明:

Insert into 
[TestSystem2].[dbo].[Test_Software_Mandant_Status] ([SW_IDN], [Mandant_IDN],
Software_Status], [UserName], [TimeStamp])
values
(15000, 9999,
  (SELECT [Software_Status] 
  FROM [TestSystem2].[dbo].[Test_Software_Status] 
  WHERE [Software_Status_Kennzeichen] = 'S' and [Software_Status_Text] = 'Test'),
testuser,
SELECT GETDATE())

我在其他地方使用了类似的结构化更新命令。我不喜欢在这个插入中使用变量,任何人都可以帮我解决这个问题吗?

我个人会使用一个变量,它会使查询看起来更干净

DECLARE @SoftwareStatus VARCHAR(100)

SELECT @SoftwareStatus = SELECT TOP 1 [Software_Status] 
  FROM [TestSystem2].[dbo].[Test_Software_Status] 
  WHERE [Software_Status_Kennzeichen] = 'S' and [Software_Status_Text] = 'Test')
然后插入您的

INSERT INTO
[TestSystem2].[dbo].[Test_Software_Mandant_Status] 
([SW_IDN], [Mandant_IDN], Software_Status], [UserName], [TimeStamp])
VALUES
(15000, 9999, @SoftwareStatus, 'testuser', GETDATE())
请注意,
GETDATE()
不需要它自己的
选择

尝试以下操作:

Insert into [TestSystem2].[dbo].[Test_Software_Mandant_Status] ([SW_IDN], 
                                                               [Mandant_IDN],
                                                               [Software_Status],
                                                               [UserName],
                                                               [TimeStamp])
SELECT 15000, 
       9999, 
       [Software_Status], 
       testuser, 
       GETDATE()
FROM [TestSystem2].[dbo].[Test_Software_Status] 
WHERE [Software_Status_Kennzeichen] = 'S' 
  and [Software_Status_Text] = 'Test',

testuser在这里是字符串值吗?@user251414-我在;)中添加了这个值但是我把它放在了Quotes中,注意GETDATE()不需要自己的SELECT,它修复了其中一个错误,谢谢!