无法获取列子字符串的最大值。
列的版本值如下:Sep-2018 | V.2 在所有这样的值中,我要提取“ |”之前最大值的所有行在“ |”之后存在。在数据集中,版本列(以及其他列)中的所需输出是2018年10月| V.6
需要找到日期部分(即2018年10月)和V.6等不同版本的最大值
数据集:
partner | region | affiliate | country | Revenue | version
---------|--------|-----------|---------|---------|----------------
Alpha | US | USA | USA | 100 | Sep-2018 | V.1
Alpha | US | USA | USA | 568 | Sep-2018 | V.2
Alpha | US | USA | USA | 674 | Sep-2018 | V.6
Alpha | US | USA | USA | 314 | Oct-2018 | V.4
Alpha | US | USA | USA | 510 | Oct-2018 | V.5
Alpha | US | USA | USA | 309 | Oct-2018 | V.6
所需结果:
Alpha US USA USA 309 Oct-2018 | V.6
答案 0 :(得分:0)
将日期转换为CYMD进行排序 然后添加用于处理领带的第二个值
答案 1 :(得分:0)
在MS SQL中,以下脚本应该有效;第一个ORDER BY获取最新日期,第二个ORDER BY获取最大版本值。
select top 1 *
from [tablename]
order by
convert(date, '01-'+SUBSTRING([version], 1, charindex('|', [version]) - 2)) DESC,
SUBSTRING([version], charindex('|', [version]) + 3, LEN([version])) DESC
答案 2 :(得分:0)
我正在使用Redshift,并且尝试使用下面提到的查询从V.1,V.2,V.3。等中提取最大值: * select * from example where cast(substring(version,regexp_instr (version,'。')+ 1)为十进制)
=(从示例中选择max(cast(substring(version,regexp_instr(version,'。')+ 1)作为十进制)))*
但是出现了这个错误:无法完成操作
[Amazon] [Amazon Redshift](30)尝试执行查询时发生错误:[SQLState XX000]错误:无效数字,值'e',位置0,类型:整数
详情:
错误:无效数字,值'e',位置0,类型:整数 编码:1207 内容:ep-2018 | V.3 查询:18804464 位置:: 0 流程:query1_593_18804464 [pid = 0]
答案 3 :(得分:0)
也许可以这样尝试:
SELECT * FROM YourTableName
WHERE Version in (SELECT distinct MAX(Version) FROM YourTableName GROUP BY partner);