如何将两个选择的查询组合在一起作为一个输出

时间:2017-04-13 15:22:47

标签: sql sql-server

我有一个问题:

SELECT TOP 1000 [Message],[Messagetest]
FROM APM_WindowsEvent_Detail
WHERE EventCode = '4740'
ORDER BY TimeGeneratedUtc DESC

运行时显示输出到消息列,类似于以下内容:

用户帐户已被锁定。主题:安全ID:S-1-5-18帐户名称:MYHSDC14 $帐户域名:MIDYORKS登录ID:0x3e7已被锁定的帐户:安全ID:S-1-5-21-2453451309-3470285952-3578167795-501帐户姓名:Guest其他信息:来电者姓名:MWMCW75687

我还有另一个查询,我需要在上面发生的情况下运行,但是基于第一个查询的结果:

SELECT REPLACE(SUBSTRING([Message], CHARINDEX('Security ID:  S-1-5-21-', [Message]), LEN([Message])), 'Security ID:  S-1-5-21-', '') AS [Messagetest]
FROM APM_WindowsEvent_Detail

因此,安全ID:S-1-5-21之前显示的所有信息都将被删除并放入Messagetest列。现在我不太了解SQL,所以我对如何组合这两个查询感到困惑。

完成此操作后,我将要运行第三个查询作为此项的一部分,以便在"帐户名称:"之前发出所有文本。我希望首先完成查询的第二部分虽然由于帐户名称被引用两次,但可能有另一种方法可以做到这一点但是我不太了解SQL并且不确定如何执行此操作,任何帮助赞赏。

- 编辑 -

我现在已经解决了这个问题,我没有意识到在使用时:AS Messagetest我无法根据它运行第二个查询,我现在的方式如下:

DROP TABLE DOLockoutTest

SELECT SUBSTRING(Message, LEN(LEFT(Message, CHARINDEX ('795-', Message))) + 1, LEN(Message) - LEN(LEFT(Message, CHARINDEX ('795-', Message))) - LEN(RIGHT(Message, LEN(Message) - CHARINDEX ('Additional', Message))) - 1) AS [Messagetest] 
INTO DOLockoutTest
FROM APM_WindowsEvent_Detail
WHERE EventCode IN
(
    SELECT EventCode
    FROM dbo.APM_WindowsEvent_Detail
    WHERE EventCode = '4740'
)


SELECT REPLACE(SUBSTRING([Messagetest], CHARINDEX('Account Name:', [Messagetest]), LEN([Messagetest])), 'Account Name:', '') AS [User] 
FROM DOLockoutTest

0 个答案:

没有答案
相关问题