【问题标题】:How to Show data from a column separated by Character values first and then numeric values in sql server如何在sql server中先显示由字符值分隔的列中的数据,然后显示数值
【发布时间】:2015-09-11 09:19:55
【问题描述】:

假设我有一张桌子

id  Values
1   A
2   B
3   C
4   7
5   J
6   K
7   L

现在我想要一个像

这样的输出
id  Values
1   A
2   B
3   C
4   J
5   K
6   L
7   7

如何做到这一点?

【问题讨论】:

标签: .net sql-server-2012


【解决方案1】:

使用子查询/CTE 对每列进行独立排序生成 ROW_NUMBER(),并使用生成的 rn 连接:

SqlFiddleDemo

;WITH cte AS
(
  SELECT
   [id],
   rn = ROW_NUMBER() OVER(ORDER BY id)
  FROM tab
)  
,cte2 AS
(
  SELECT
   [values],
   rn = ROW_NUMBER() OVER(ORDER BY CASE
           WHEN  LEFT([values],1) LIKE '%[A-Z]%'
           THEN 1 
           ELSE 2
         END, [values])
  FROM tab
)  

SELECT c1.id, c2.[values]
FROM cte c1
JOIN cte2 c2
  ON c1.rn = c2.rn;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 2021-12-27
    相关资源
    最近更新 更多