如何通过包含数字的文本列进行排序查询?

我遇到了以下问题,我从一个标签页查询到另一个标签页,然后试图按照评分(AA)和过去的天数(X,这是一个负数,因为它代表了超过截止日期的天数)对其中一列进行排序。查询的结果如下。

  =QUERY('(Name of Tab1)'!K7:AA,"SELECT K, N , X, Z, AA WHERE X != 'Closed' ORDER BY X ASC")

问题是我得到的X列的排序是这样的。

-279.00
-3.00
-10.00
-106.00
-11.00
-12.00
-12.00
-13.00
-14.00
-144.00
-149.00

很明显,这不是我想要的排序,而且很明显,它是把它当作字符串而不是int来读的。然而,每当我尝试使用SQL函数,如cast为int时,它就不工作了。我怎样才能把这些值转换成int,这样它就能正确排序了?先谢谢你。

解决方案:

如何通过包含数字作为文本的列进行排序查询?

你所面临的问题,与 “数字” 是负数。这是因为包含数字的列单元格被格式化为文本。文本单元格不能被排序.

请使用以下公式。

=QUERY({'Name of Tab1'!K7:W44,ARRAYFORMULA('Name of Tab1'!X7:X44*1),'Name of Tab1'!Y7:AA44}, 
       "SELECT Col1, Col4, Col14 , Col16, Col17 WHERE Col14 is not null and Col1<>'' ORDER BY Col14")

How to sort a query by a column containing numbers as text


公式是如何计算的:

  1. 我们把我们的范围分成三部分
    • 摆在我们面前的部分 “数字” 专栏 'Name of Tab1'!K7:W44
    • 我们的 “数字 “栏 ARRAYFORMULA('Name of Tab1'!X7:X44*1)
    • 最后一部分 'Name of Tab1'!Y7:AA44
  2. 因为我们现在的3个范围都在大括号里了 {} 我们不能使用列字母。相反,我们必须使用 Col1, Col4 等,其中 Col1 是我们合并范围的第1列, Col4 是我们以前的 X 栏目等。
  3. 关于我们 “数字” 专栏 ARRAYFORMULA('Name of Tab1'!X7:X44*1). 安 Arrayformula乘以1,将每一个含有数字的文本单元格变成数字格式。 和有文字的 (在我们 Closed) 归于 #VALUE! 的时候会被跳过。WHERE Col14 is not null (而不是我们原来的 WHERE X != 'Closed')

使用的功能。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

apply如何与接受逗号分隔参数的函数一起工作?

2022-5-14 20:00:31

解决方案

在SQL中拥有两个不同的顺序和限制语句。

2022-5-14 20:00:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索