Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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 如何从结果集中选择最大季度数?_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 如何从结果集中选择最大季度数?

Sql 如何从结果集中选择最大季度数?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个多年来每个季度的周期列表,我需要从结果中选择最长周期 比如说,实际数据是这样的 **period description** 2014 Q2 2014 Q1 2018 Q3 2016 Q1 2017 Q4 2018 Q4 在这里,我只需要获取给定数据中的最新季度。我们需要获得2018年第四季度 我试过: select substring (perioddescription, 1, 4) 但是我在它们之间有一条线,所以任何帮助都将不胜感激。谢谢你的帮助,你可以在下面试试- sele

我有一个多年来每个季度的周期列表,我需要从结果中选择最长周期

比如说,实际数据是这样的

**period description**
2014 Q2
2014 Q1
2018 Q3
2016 Q1
2017 Q4
2018 Q4
在这里,我只需要获取给定数据中的最新季度。我们需要获得2018年第四季度

我试过:

select substring  (perioddescription, 1, 4)
但是我在它们之间有一条线,所以任何帮助都将不胜感激。谢谢你的帮助,你可以在下面试试-

select top 1 * from tablename
order by cast(left(perioddescription,4) as int) desc,cast(right(perioddescription,1) as int) desc

另一种可能的方法是使用自定义
ORDER BY
子句:

输入:

CREATE TABLE #Data (
   [Period] varchar(7)
)
INSERT INTO #Data 
   ([Period])
VALUES   
   ('2014 Q2'),
   ('2014 Q1'),
   ('2018 Q3'),
   ('2016 Q1'),
   ('2017 Q4'),
   ('2018 Q4')
T-SQL:

SELECT TOP(1) [Period]   
FROM #Data
ORDER BY 
   CONVERT(int, SUBSTRING([Period], 1, 4)) * 10 + 
   CONVERT(int, SUBSTRING([Period], 7, 1)) DESC
输出:

-------
Period
-------
2018 Q4
注意:如果您不确定所有数据是否为
yyyy Qq
格式,请使用
TRY\u CONVERT()


一个简单的MAX函数可以为您提供所需的输出-

SELECT MAX(period_description) 
FROM 
(
    SELECT '2014 Q2' period_description UNION ALL
    SELECT '2014 Q1' UNION ALL
    SELECT '2018 Q3' UNION ALL
    SELECT '2016 Q1' UNION ALL
    SELECT '2017 Q4' UNION ALL
    SELECT '2018 Q4'
)A
输出为-

2018 Q4

按期间描述描述排序的前1名?如果这是一个一致的文本字段。由于您的格式,该字符串的词法顺序应该有效。
YYYY QX
是精确格式吗?感谢ZorgoZ,是的,它是精确的值添加另一个值,如'adfaddFasdFasdFasdSdfSdfSdfSdfSdfSdfSdfSdfsA'它将返回该值:):Dyou永远不知道垃圾:)这些也需要转换vai,否则这些也无法工作vai此列包含字符串,因此它可能会以某种方式推送不同的字符串而不是一段时间
2018 Q4