SQL Server SELECT DISTINCT FROM包含所有记录的3列

brqmpdu1  于 2023-02-03  发布在  其他
关注(0)|答案(1)|浏览(182)

我想查询和获取所有具有相同日期时间的记录,按类型过滤,提供商和运营商。
如果我运行select distinct EventStamp,我会得到我需要的所有记录,但是我缺少类型、提供者和操作符。
像截图,如果我有类型OPR,我需要这个记录,如果所有类型都是DDE,我需要提供程序RDSSERVER\Intouch。

SELECT [EventStamp] ,[TagName] ,[Description],[Area] ,[Type],[Value], Antes FROM
(
SELECT distinct [EventStamp]
      ,[TagName]
      ,[Description]
      ,[Area]
      ,[Type]
      ,[Value]
      ,[CheckValue] as Antes

  FROM [dbo].[v_EventHistory] where type = 'OPR' 
  UNION
  SELECT distinct [EventStamp]
      ,[TagName]
      ,[Description]
      ,[Area]
      ,[Type]
      ,[Value]
      ,[CheckValue] as Antes

  FROM [dbo].[v_EventHistory] where type = 'DDE' 
)as EV order by EventStamp desc

对于这段代码,我忽略了类型、提供者和操作符。
我需要这样

来自汉诺威的共享查询(谢谢)

91zkwejq

91zkwejq1#

听起来您需要使用IN来标识具有相同事件戳、提供者和操作者的所有记录。

SELECT * 
FROM [dbo].[v_EventHistory] 
WHERE   CAST([EventStamp] AS VARCHAR(25)) + [Provider] + [Operator] 
            IN  (   SELECT DISTINCT CAST([EventStamp] AS VARCHAR(25)) + [Provider] + [Operator] 
                    FROM [dbo].[v_EventHistory] 
                    WHERE [type] IN  ( 'OPR', 'DDE' )
                )
ORDER BY EventStamp DESC

相关问题