Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 根据SQL Server中的其他列条件查找列的最大值和最小值_Sql Server_Tsql - Fatal编程技术网

Sql server 根据SQL Server中的其他列条件查找列的最大值和最小值

Sql server 根据SQL Server中的其他列条件查找列的最大值和最小值,sql-server,tsql,Sql Server,Tsql,我有一张桌子 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 , [Sequenc

我有一张桌子

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
表格行

我需要根据“Column1”、“Column2”和“Column3”列的“SequenceType”值找出最大和最小金额

输出列: 第1列、第2列、第3列、MaxAmountForSeqTypeP、MinAmountForSeqTypeP、MaxAmountForSeqTypeD、MinAmountForSeqTypeP

预期产出

类似这样的内容:

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
大概是这样的:

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

. 请按照链接,找到,你应该做什么…我更新了“预期输出”图像如果,请阅读。。。请阅读。您提供的是示例数据和耗材表。太好了!。重点是:你期待外国陌生人的帮助。。。所以,这不是一个请便我(家里?)的工作平台……老实说,人们应该停止回答这种低强度的问题。SQL pivot/crosstab问题每天被问50多次,其中很大一部分在解决问题上几乎没有投入任何精力。然而人们仍然一遍又一遍地给出(相同的)答案。我同意,这是一个普遍的问题,在看到答案后,我觉得我没有付出足够的努力来解决这个问题。我会记住我的下一个问题。。请按照链接,找到,你应该做什么…我更新了“预期输出”图像如果,请阅读。。。请阅读。您提供的是示例数据和耗材表。太好了!。重点是:你期待外国陌生人的帮助。。。所以,这不是一个请便我(家里?)的工作平台……老实说,人们应该停止回答这种低强度的问题。SQL pivot/crosstab问题每天被问50多次,其中很大一部分在解决问题上几乎没有投入任何精力。然而人们仍然一遍又一遍地给出(相同的)答案。我同意,这是一个普遍的问题,在看到答案后,我觉得我没有付出足够的努力来解决这个问题。我会记住我的下一个问题。我也会用这个解决方案。。。(正如@ZLK所提到的,这应该是一个相当有效的解决方案)@MJH,谢谢你的回答。我想知道为什么我不这样想来找出我的预期输出,我同意。我想,有时间体验一下吧@萨伊夫:如果你觉得这个答案帮助你解决了问题,那么请。这将表达你对那些花自己时间帮助你的人的感激之情。我也将使用这个解决方案。。。(正如@ZLK所提到的,这应该是一个相当有效的解决方案)@MJH,谢谢你的回答。我想知道为什么我不这样想来找出我的预期输出,我同意。我想,有时间体验一下吧@萨伊夫:如果你觉得这个答案帮助你解决了问题,那么请。这将表达你对那些花自己的时间帮助你的人的感激之情。