我的查询中有一个自定义列:
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... 公式?
自定义列的名称在定义它的查询的 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