【问题标题】:Order By Select Data as per the comma separated ID values '3,4,5' stored in column SQL Server按存储在列 SQL Server 中的逗号分隔 ID 值“3,4,5”选择数据排序
【发布时间】:2018-01-08 19:12:19
【问题描述】:

我如何返回按逗号分隔的数据顺序存储在其他数据之后的其他表中(顶部的首选 ID)

Please find more explanation here

【问题讨论】:

  • 您将首先提供有关您所要求内容的一些详细信息。这是一个很好的起点。 spaghettidba.com/2015/04/24/…
  • 不管怎样,存储这样的分隔数据是一种非常糟糕的数据处理方式。
  • 感谢您的帮助。我更新了一张图片以获得更好的解释
  • 您能否阅读我链接的文章并提供详细信息以供其他人使用,而不是图片?像这样处理这些分隔值是一场噩梦。
  • 从你极其模糊的描述来看,这已经发生了。您图片中的唯一值也在您的分隔字符串中。我认为你可能是时候退后一步,尝试更清楚地解释这一点。

标签: sql-server sql-server-2008 sql-server-2012


【解决方案1】:

要进行这种排序,您需要创建一个包含您的排序的虚拟列,然后按该列对数据进行排序。像这样的例子

Select * from 
    (Select *, case ResourceCategory when 44 then 1. when 42 then 2, when 72 then 3 else 4 end as PriorityOrder from dataTable) A
Order by PriorityOrder

为了在代码中从字符串创建这种排序,您必须将查询创建为动态 sql,并从该字符串构建 case 语句。

【讨论】:

  • 我动态收到 ID,如果它们是静态的,这将起作用
  • 正如我所说,您每次都需要根据收到的字符串创建自己的 case 语句版本。将字符串拆分为 ID,将查询和 case 语句从它们创建为字符串,然后执行生成的字符串以实际运行查询。阅读动态 SQL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多