提问人:user3900603 提问时间:12/13/2022 最后编辑:Jodrelluser3900603 更新时间:12/13/2022 访问量:55
在 SQL 查询中查找最大日期数
Finding Max of dates in SQL Query
问:
C类型 | 材料 | 多德 | PLNT公司 | SOrg | 已售至 | ShipTo(发货地址) | 客户 | 供应商 | SerProv的 | POrg | 年 | 每 | 自 | NSapRel | 量 | CRCY公司 | 更改 | 时间 | 更改者 | SAP日期 | SAPime | SAPUser |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PB00型 | 775515 | 100 | 加语 | 7500000678 | PO04型 | 2022 | 100 | 中国科学院 | 9,299.36 | 或! | 15.02.2022 | 13:55:16 | 用户 1 | 15.02.2022 | 13:56:15 | 用户 1 | ||||||
PB00型 | 775515 | 100 | 加语 | 7500000678 | PO04型 | 2022 | 100 | 中国科学院 | 5,907.42 | 或! | 28.01.2022 | 18:45:45 | 02.02.2022 | 12:32:18 | SAPPO_DEP_AZ |
我为上表编写了一个查询,以获取这两行的最大日期,不幸的是,它每次都返回为“28.01.2022”。
这是我的查询。
SELECT
CType,
Material,
CoCd,
Plnt,
[Customer],
SOrg,
[Vendor],
max_date = MAX(ChangedOn) OVER (
PARTITION BY
CType,
Material,
CoCd,
Plnt,
[Customer],
SOrg,
[Vendor])
FROM
Calc
WHERE
CType='PB00'
AND
Material='775515'
AND
Plnt='GA'
预期输出:MAxDate 列为“15.02.2022”
Varchar(500)中的所有列,所以我也尝试了以下查询,
SELECT
CType,
Material,
CoCd,
Plnt,
[Customer],
SOrg,
[Vendor],
MAX(cast(ltrim(rtrim(ChangedOn)) as date)) AS max_date
FROM
Calc
WHERE
CType='PB00'
AND
Material='775515'
AND
Plnt='GA'
GROUP BY
CType,
Material,
CoCd,
Plnt,
[Customer],
SOrg,
[Vendor]
显示错误“从字符串转换日期和/或时间时转换失败”。
这里有什么问题吗?
答:
2赞
ahmed
12/13/2022
#1
您可以使用 or 函数将 varchar date 转换为 max 函数中的 date 数据类型,但最好将日期值存储为日期以避免此类问题。CONVERT
TRY_CONVERT
请尝试以下操作:
SELECT CType,Material, CoCd, Plnt, [Customer], SOrg, [Vendor],
max_date = MAX(TRY_CONVERT(DATE, ChangedOn, 104)) OVER
(PARTITION BY CType,Material, CoCd, Plnt, [Customer], SOrg, [Vendor])
FROM Calc where CType='PB00' and Material='775515' and Plnt='GA'
观看演示。
评论
ChangedOn
SELECT CType,Material, CoCd, Plnt, [Customer], SOrg, [Vendor], MAX(ChangedOn) AS max_date FROM Calc WHERE CType='PB00' AND Material='775515' AND Plnt='GA' GROUP BY CType,Material, CoCd, Plnt, [Customer], SOrg, [Vendor]
VARCHAR