根据SQL Server中的其他列条件找出一列的最大值和最小值

赛义夫

我有一张桌子

CREATE TABLE #Table1
(
    [RowID] INT NOT NULL PRIMARY KEY IDENTITY(1, 1)
    , [Column1] BIGINT NOT NULL
    , [Column2] CHAR(10) NOT NULL
    , [Column3] CHAR(5) NOT NULL
    , [Amount]  NUMERIC(16, 4) NOT NULL DEFAULT 0.0000
    , [SequenceNumber] INT NOT NULL
    , [SequenceType] CHAR(1) NOT NULL
)


INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 50019.0000, 1, 'P');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 50021.0000, 2, 'P');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 50023.0000, 3, 'P');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 50025.0000, 4, 'P');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 50027.0000, 5, 'D');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 50029.0000, 6, 'D');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 50033.0000, 8, 'P');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 50035.0000, 9, 'D');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 2754246.0000, 10, 'P');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 2660870.0000, 11, 'P');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 7938347.0000, 12, 'D');
INSERT INTO #Table1 VALUES (1, '62546J307', '00963', 7951196.0000, 13, 'D');
INSERT INTO #Table1 VALUES (1, '62546J307', '00964', 2660870.0000, 11, 'P');
INSERT INTO #Table1 VALUES (1, '62546J307', '00964', 7938347.0000, 12, 'D');

SELECT * FROM #Table1;

DROP TABLE #Table1

表格行

在此处输入图片说明

我需要根据“列1”,“列2”和“列3”的列“ SequenceType”值找出最大和最小金额。

输出列:Column1,Column2,Column3,MaxAmountForSeqTypeP,MinAmountForSeqTypeP,MaxAmountForSeqTypeD,MinAmountForSeqTypeP

预期产量

在此处输入图片说明

MJH

像这样:

select Column1, Column2, Column3, 
    max(case when SequenceType = 'P' then amount else null end) MaxP, 
    min(case when SequenceType = 'P' then amount else null end) MinP,
    max(case when SequenceType = 'D' then amount else null end) MaxD, 
    min(case when SequenceType = 'D' then amount else null end) MinD
from Table1
group by Column1, Column2, Column3

或者这可能会更快:

;with cte as (
     select Column1, Column2, Column3, 
         case when SequenceType = 'P' then amount else null end P,
         case when SequenceType = 'D' then amount else null end D
     from Table1
)
select Column1, Column2, Column3, Max(P) MaxP, Min(P) MinP, Max(D) MaxD, MIn(D) MinD
from cte
group by Column1, Column2, Column3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据其他 2 列选择 1 列的最大值和最小值?

根据另一列中的字符保留最小值或最大值

在单个查询中从SQL的同一列中选择最大值和最小值

根据数组的另一列在一列中聚合最小值最大值-Python

根据一列的最小值和最大值恢复所有行-Python Pandas

PySpark:根据其他三列的最大值查找一列的值

根据我选择的列变化的滑块输入中的最大值和最小值

根据 SQL Server 中的其他列值推断一列的值

按日期按顺序分组,根据其他列值找到最小值,最大值

按一列分组,根据该列找到最小值和最大值,并计算平均值做滑动窗口 awk

如何使用分区将最小值/最大值转换为 SQL Server 中的列?

如何根据R中另一列的日期(月/日/年)计算列的年/月平均值、最大值、最小值等

SQL分组依据:选择另一列具有其最小值/最大值的值

如何根据数据框另一列中的条件在列中查找最小值?

根据特定组的最小值和最大值为列分配值

从一列中选择最小值(日期),最大值(日期)并按天分组-SQL

SQL根据其他列中的最小值获取值

如何将其他列中的最大值放入另一列 - oracle sql

根据熊猫数据框中的条件获取最大值和最小值

根据最小值和最大值创建新的熊猫列

根据列的总和返回最小值和最大值

根据R中另一列的最小值获得一列的对应值

根据列 SQL Server 中的最大值选择行

根据Oracle PL / SQL中的其他列最大值选择字段

根据其他列中的条件对一列中的值求和,并更改值

从一列定义的组中选择最小值/最大值作为另一列的子组-SQL,HPVertica

SQL将一列中的最小值与另一列中的最大日期进行比较

单个 sql 查询中条件的最小值和最大值

SQL获取具有单行的数据集中列的最小值和最大值