【问题标题】:How can I order manipulated data that I store in a variable in SQL?如何订购存储在 SQL 变量中的操作数据?
【发布时间】:2022-01-09 04:39:41
【问题描述】:

我有一个变量@columns,它输出一组小数。例如,[0.00000][1.00000][4.00000][3.00000]。这些后来被用作我的一个查询中的列。但是,小数不会按任何特定顺序排列。我想在SQL 中从小到大对它们进行排序。我没有看到执行此操作的函数。

我该如何操作数据来做到这一点?

SELECT
    @COLUMNS += QUOTENAME(ct.rate) + ','
FROM
(
SELECT DISTINCT ct.rate FROM
DB.table ct
WHERE ct.ID = @ID
) ct

SET @COLUMNS = LEFT(@COLUMNS, LEN(@COLUMNS) - 1);

PRINT @COLUMNS```

【问题讨论】:

  • 请用您正在使用的 DBMS 标记您的问题。还使用示例代码和数据更新您的问题,说明您正在尝试实现的目标
  • @NickW 我根据您的建议编辑了帖子。
  • PRINT 语句的输出以 0 3 4 2 的顺序显示我上面解释的数字。我希望它是从最小到最大的顺序。
  • 还有,0 3 4 2 是什么顺序????

标签: sql ssms


【解决方案1】:

如果您在数组之前对数据进行排序,您将获得从最小到最大排序的输出。由于不能在子查询中使用 order,所以可以选择一个 TOP MAX(INT) 进行子查询。

SELECT
    @COLUMNS += QUOTENAME(ct1.rate) + ','
FROM
(
SELECT DISTINCT  TOP 2147483647 ct.rate FROM
DB.table ct
WHERE ct.ID = @ID
ORDER BY ct.rate
) ct1

【讨论】:

  • @Jtara 不要!!!我们每天都在学习。通常我们是采取更复杂的方式吗
  • @JTara 我也第一次想到了 SQL 中的数组
猜你喜欢
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 2018-02-08
相关资源
最近更新 更多