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]
我正在使用 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]