[英]Can I do this in sql?
我试图让**ID_RE**
在最高列**Date_Enter,Date_Process,Date_Shipment**
例如,这里有一个三行。
- **1,2012-02-01,2016-02-01,2015-02-01,Send for MX4343**
- **2,2013-02-01,2008-04-01,2009-02-01,It's For trade**
- **3,2018-02-01,2019-05-01,2007-02-01,Like a environment**
这是最高的:
3,2018-02-01,2019-05-01,2007-02-01,Like a environment
我一直在尝试这样做:
SELECT
MAX(Date_Enter),
MAX(Date_Process),
MAX(Date_Shipment),
Description
FROM Reports
但是,不起作用
CREATE TABLE [dbo].[Reports](
[ID_RE] [int] IDENTITY(1,1) NOT NULL,
[Date_Enter] [datetime] NOT NULL,
[Date_Process] [datetime] NOT NULL,
[Date_Shipment] [varchar](20),
[Description] [varchar](20)
CONSTRAINT [PK_Reports] PRIMARY KEY CLUSTERED
(
[ID_RE] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
这里我们有一些信息
insert into Reports(Date_Enter,Date_Process,Date_Shipment,Description) values('2012-02-01 02:25:23','2016-02-01 08:45:23','2015-02-01 05:35:23','Send for MX4343')
insert into Reports(Date_Enter,Date_Process,Date_Shipment,Description) values('2013-02-01 01:52:23','2008-04-01 12:45:23','209-02-01 07:35:43','It is For trade')
insert into Reports(Date_Enter,Date_Process,Date_Shipment,Description) values('2018-02-01 04:34:33','2019-05-01 04:35:44','2007-02-01 09:35:09','Like a environment')
您可以根据您的要求申请order by
如下所示。 如果您希望您的数据获取Date_Enter
最大的记录,则在该列上应用 order by。 如果您想通过multiple order condition
获取记录,那么您还可以在多列上应用订单。
仅按 Date_Enter 订购:
SELECT TOP 1
ID_RE
Date_Enter,
Date_Process,
Date_Shipment,
Description
FROM Reports
ORDER BY Date_Enter DESC
使用 Date_Enter、Date_Process 和 Date_Shipment 订购:
SELECT TOP 1
ID_RE
Date_Enter,
Date_Process,
Date_Shipment,
Description
FROM Reports
ORDER BY Date_Enter DESC, Date_Process DESC, Date_Shipment DESC
问题:
您编写的查询不正确。 我建议你在 SQL 中阅读GROUP BY
注意:您的问题数据中有以下两个问题。
1- Date_Shipment 不是正确的日期,因为 209 不是一个有效的年份 2- [Date_Shipment] 的数据类型是VARCHAR
它应该是DATETIME
,
insert into Reports(Date_Enter,Date_Process,Date_Shipment,Description) values('2013-02-01 01:52:23','2008-04-01 12:45:23','209-02-01 07:35:43','It is For trade')
解决方案 :
如果您想根据所有 3 列找到MAX
并基于此做出决定,您可以编写如下查询。
SELECT
ID_RE,
(SELECT MAX(MaxDate)
FROM (VALUES (Date_Enter),(Date_Process),(Date_Shipment)) AS FindMax(MaxDate))
AS MaxDate
FROM [dbo].[Reports]
如果您想根据 1 个日期列查找MAX
,您可以尝试如下。 如果 2 条或多条记录的Date_Enter
相同,则以下查询将返回多条记录。
SELECT * FROM [dbo].[Reports]
WHERE Date_Enter =
(
SELECT MAX(Date_Enter) FROM [dbo].[Reports]
)
如果您只是想根据 Date_Enter 获取 1 条记录,您可以尝试如下操作。
SELECT TOP 1 * FROM [dbo].[Reports]
ORDER BY Date_Enter DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.