SQL 查询的最大值的二元过滤器

Binary filter for max value of SQL query

我正在使用 Microsoft SQL Server Management Studio。我是 SQL 的新手,真的不知道如何开始解决这个问题,所以我提前为缺乏已经尝试过的解决方案表示歉意。我当前 SQL 查询的一个简化示例如下:

USE [DataBase]
GO
SELECT [ID]
      ,[Value1]
      ,[Max1]
      ,[Value2]
      ,[Max2]
FROM [DataTable]

这会产生类似这样的结果:

[ID] [Value1] [Max1] [Value2] [Max2]
[1]    [2]     [0]      [9]     [1]
[1]    [4]     [0]      [3]     [0]
[1]    [8]     [1]      [5]     [0]
[1]    [5]     [0]      [6]     [0]
[2]    [1]     [0]      [1]     [0]
[2]    [6]     [1]      [4]     [0]
[2]    [3]     [0]      [3]     [0]
[2]    [2]     [0]      [5]     [1]

我正在尝试获取我的数据table (DataTable) 到 select 二进制指示符对应的值(分别为 Value1 和 Value2 的 Max1 和 Max2 列)它是最大值对于那个ID。基本上我试图让上面的 table 变成:

[ID] [Value1] [Value2]
[1]    [8]      [9]
[2]    [6]      [5]

如果为每个变量创建一个单独的数据框要简单得多(Value1 与 Value2 在一个单独的结果数据框中),那也很好。

谢谢

SELECT [ID]
      ,MAX([Value1]) as Value1
      ,MAX([Value2]) as Value2
FROM [DataTable]
GROUP BY
    [ID]

您可以使用条件聚合来获取与二进制值 1 对应的值。

select 
[ID]
,max(case when [Max1] = 1 then [Value1] end) as value1
,max(case when [Max2] = 1 then [Value2] end) as value2
from [DataTable]
group by [ID]