使用分区上的 row_number 按自定义列名称进行分区

问题描述 投票:0回答:1

我的查询中有一个自定义列:

CASE when Table.Column0 like '%x%' then 'A' else 'B' end as 'CustomColumn',

当我尝试使用以下方式对查询中的数据进行分区时:

row_number () over (partition by Table.Column1, Table.Column2 order by Table.Column 3 asc) as g2

它工作得很好,但我还想添加“CustomColumn”作为分区标准以进一步拆分数据。即使我尝试将其添加到 [] SQL Server 只是告诉我“无效的列名称‘CustomColumn’”,但该列在数据预览中显示在正确的名称下。

有没有办法将它添加到 row_number() over (partition... 公式?

sql sql-server partition customcolumn
1个回答
0
投票

自定义列的名称在定义它的查询的 SELECT、WHERE 或 GROUP BY 子句中不可见(仅在 ORDER BY 中)。所以你需要使用内联子查询或公用表表达式(CTE),像这样

with q as
(
  select *, case when t.Column0 like '%x%' then 'A' else 'B' end as CustomColumn
  from t
)
select *, row_number() over (partition by CustomColumn order by Column1) rn
from q
© www.soinside.com 2019 - 2024. All rights reserved.