首页 > 解决方案 > 为每个组选择具有最小值的行

问题描述

我有一个带有如下表的数据库:

日期 容器 ID
1/1 1
2/2 1
3/3 1
4/4 2
5/5 2
6/6 3
7/7 3

容器 ID 是另一个表的外键,容器是有效命名的组,元素可以是其中的一部分。

我正在寻找一个查询来获取每个Container ID这样的最早日期:

最早日期 容器 ID
1/1 1
4/4 2
6/6 3

有什么方法可以让我加入 Container ID 来实现这一点,还是我在加入时走错了路?

标签: sqlsql-servertsqljoin

解决方案


但最好的方法是将日期保存为日期列。您可以将所有功能用于日期

CREATE TABLE table1 (
  [Date]  varchar(10),
  [Container ID] INTEGER
);

INSERT INTO table1
  ([Date], [Container ID])
VALUES
  ('1/1', '1'),
  ('2/2', '1'),
  ('3/3', '1'),
  ('4/4', '2'),
  ('5/5', '2'),
  ('6/6', '3'),
  ('7/7', '3');
GO
SELECT MIN([Date]), [Container ID] FROM table1 GROUP BY [Container ID]
GO
(无列名) | 容器 ID
:--------------- | ------------:
1/1 | 1
4/4 | 2
6/6 | 3

db<>在这里摆弄


推荐阅读