Вот мой запрос:
IF Object_id('tempdb..##delist') IS NOT NULL
DROP TABLE ##delist
SELECT jl.jobid as 'JobID',
jl.CustomObjectName as 'DEName',
cols.name as 'ColumnName',
null as 'ColumnNumber'
INTO ##delist
FROM ##joblist AS jl WITH (nolock)
JOIN sys.tables tbls with (nolock) on tbls.name = jl.CustomObjectName
JOIN sys.columns cols with (nolock) on cols.object_id = tbls.object_id
WHERE cols.name <> '_CustomObjectKey'
Вот мой набор результатов:
В конечном итоге я ищу способ постепенной нумерации полей данных ColumnNumber ПО «DEName». Другими словами, для каждого ColumnName для каждого DEName я хочу, чтобы ColumnNumber начинался с 1 и переходил к тому количеству уникальных ColumnNames, которые есть для каждого DEName. Любые идеи?
Обход взгляда ... blogs.sentryone.com/aaronbertrand/bad-habits-nolock -everywhere Этот намек на запрет намного более зловещий, чем думает большинство людей.
Возможный дубликат Как вернуть возрастающий номер группы для каждой группы в SQL
Извините, при дальнейшей проверке я отметил плохой дубликат .. это лучший дубликат: stackoverflow.com/questions/2066178/…
Вы можете использовать row_number()
:
select . . .,
row_number() over (partition by jl.CustomObjectName order by (select NULL)) as columnNumber
OP май также хочет добавить jl.jobid
к PARTITION BY
, если есть вероятность того, что jl.CustomObjectName
может появиться в нескольких jl.jobid
.
@Shawn. . . Это хороший момент. В какой-то момент нам действительно нужно доверять тому, что говорит OP: «В конечном итоге я ищу способ постепенно пронумеровать поля данных ColumnNumber ПО« DEName »».
Правда. Я больше комментировал для будущих читателей и хотел указать OP, что они, возможно, не осознавали, что нумерация может измениться, если jobID
окажется столбцом основного раздела. :-)
не могли бы вы разместить ожидаемую нумерацию?