Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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中组中的分区的MIN()_Sql_Sql Server - Fatal编程技术网

针对SQL server中组中的分区的MIN()

针对SQL server中组中的分区的MIN(),sql,sql-server,Sql,Sql Server,我需要针对SQL server中的分区使用MIN() MY CODE DROP TABLE #TEMP_TABLE CREATE TABLE #TEMP_TABLE (SR_NO INT,DATA VARCHAR(5),DATE DATETIME) INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (1,'A','2015-11-25 18:37:59.120') INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE)

我需要针对SQL server中的分区使用MIN()

MY CODE

DROP TABLE #TEMP_TABLE
CREATE TABLE #TEMP_TABLE (SR_NO INT,DATA VARCHAR(5),DATE DATETIME)
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (1,'A','2015-11-25 18:37:59.120')
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (2,'A','2015-11-25 18:36:59.120')
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (3,'A','2015-11-25 18:35:59.120')
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (4,'B','2015-11-25 18:34:59.120')
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (5,'B','2015-11-25 18:33:59.120')
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (6,'B','2015-11-25 18:32:59.120')
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (7,'B','2015-11-25 18:31:59.120')
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (8,'B','2015-11-25 18:30:59.120')
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (9,'A','2015-11-25 18:27:59.120')
INSERT INTO #TEMP_TABLE (SR_NO,DATA,DATE) VALUES (10,'B','2015-11-25 18:26:59.120')

SELECT
    ROW_NUMBER() OVER (PARTITION BY DATA ORDER BY DATA DESC) AS ROW_NUM,
    DATA,
    MAX(DATE) AS MAX_DATE   ,
     MIN(DATE) AS MIN_DATE
FROM
    #TEMP_TABLE
GROUP BY 
    DATA
我的输出

预期数据

我希望最小日期作为记录组的最小日期和最大日期。 也就是说,上述数据中的第一组记录是

data time
A    5:00
A    4:00
A    3:00
B    2:00
A    1:00
然后我想将输出返回为

data    max  min
a      5:00  3:00
输出-

DATA  MAX_DATE                MIN_DATE
----- ----------------------- -----------------------
A     2015-11-25 15:53:12.940 2015-11-25 15:51:12.940
B     2015-11-25 15:50:12.940 2015-11-25 15:48:12.943
C     2015-11-25 15:47:12.943 2015-11-25 15:46:12.943
A     2015-11-25 15:43:12.943 2015-11-25 15:43:12.943
D     2015-11-25 15:45:12.943 2015-11-25 15:42:12.943
更新-

SELECT *,
    row_id = ROW_NUMBER() OVER (ORDER BY [DATE] DESC),
    row_id_by_data = ROW_NUMBER() OVER (PARTITION BY DATA ORDER BY [DATE] DESC),
    group_id = ROW_NUMBER() OVER (ORDER BY [DATE] DESC) -
    ROW_NUMBER() OVER (PARTITION BY DATA ORDER BY [DATE] DESC)
FROM #TEMP_TABLE
结果-


如果我正确理解了你的问题,我想你是在寻找类似我这里的东西。(我更改了表声明,因为我不希望它在测试后挂起)


这些图像不能解释任何事情。它们与下面的样本不匹配。最好完全删除它们并增强示例数据。假设我的假设是正确的,你认为你的样本数据是三组:5:00/3:00,B 2:00/2:00,1:00/1:00?但是您只想显示最新的组,即5:00/3:00?请澄清。无论你在回答中发布了什么,都是绝对完美的。但是我不明白这些行在做什么val=ROW_NUMBER()OVER(ORDER BY[DATE]DESC)-ROW_NUMBER()OVER(PARTITION BY DATA ORDER BY[DATE]DESC)请你帮我理解这个概念,请检查更新的答案和信息从这篇文章-你只是复制和粘贴我的代码,我看不到你有任何改变的代码抱歉。我复制了上面的部分,并用它来得到答案,然后没有看到它和你的一样。有些日子,我的大脑只是在跳跃。
SELECT *,
    row_id = ROW_NUMBER() OVER (ORDER BY [DATE] DESC),
    row_id_by_data = ROW_NUMBER() OVER (PARTITION BY DATA ORDER BY [DATE] DESC),
    group_id = ROW_NUMBER() OVER (ORDER BY [DATE] DESC) -
    ROW_NUMBER() OVER (PARTITION BY DATA ORDER BY [DATE] DESC)
FROM #TEMP_TABLE
DECLARE @TEMP_TABLE TABLE (SR_NO INT,DATA VARCHAR(5),DT DATETIME)

INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (1,'A',(DATEADD(MINUTE,11,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (2,'A',(DATEADD(MINUTE,10,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (3,'A',(DATEADD(MINUTE,9,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (4,'B',(DATEADD(MINUTE,8,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (5,'B',(DATEADD(MINUTE,7,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (6,'B',(DATEADD(MINUTE,6,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (7,'C',(DATEADD(MINUTE,5,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (8,'C',(DATEADD(MINUTE,4,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (9,'D',(DATEADD(MINUTE,3,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (10,'D',(DATEADD(MINUTE,2,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (1,'A',(DATEADD(MINUTE,1,GETDATE())))
INSERT INTO @TEMP_TABLE (SR_NO,DATA,DT) VALUES (1,'B',GETDATE())

SELECT DATA, MAX(DT) as MaxDate, MIN(DT) as MinDate
FROM @TEMP_TABLE
GROUP BY DATA