Использование Row_number() OVER(partition BY..) вместе с объявлением локальных переменных
У меня есть запрос SQL, в этом запросе SQL я хочу выбрать отдельные столбцы, независимо от столбца в первую очередь. Для других SQL-запросов я использую Row_number() OVER(partition BY..) и мне также нужно использовать внутреннее соединение. Запрос, в котором я хочу использовать row_number и внутреннее соединение:
DECLARE @columns NVARCHAR(MAX)
DECLARE @params NVARCHAR(MAX) = '@columns NVARCHAR(MAX) OUTPUT'
DECLARE @sql NVARCHAR(MAX) = 'SELECT @columns = STUFF(
(
SELECT '',''+ [column_name] FROM information_schema.columns
WHERE (table_schema = ''dbo''
AND table_name = ''main_mps_dqs_analog'')
AND (ordinal_position <= 73) FOR XML PATH('''')),1,1,'''')'
EXEC sp_executesql @sql, @params, @columns OUTPUT
SET @sql = 'SELECT '+ @columns + ' FROM dbo.main_mps_dqs_analog WHERE logtime BETWEEN ''2014-10-10 07:17:00'' AND ''2014-10-10 08:47:00'''
EXEC(@sql)
Я хочу применить внутреннее соединение этой таблицы с INDUS2_BDS.dbo.ddtable
и я хочу beam_current
а также logtime
этого INDUS2
таблица базы данных и как применить раздел BY beam_current
в этом запросе.
1 ответ
Решение
SET @sql = 'SELECT ' + @columns + ' ,AnotherTable.beam_current, RowNumber() Over(Partition By SomeColumn Order By SomeColumn) AS Rn
FROM dbo.TableName join AnotherTable on TableName.SomeColumn = AnotherTable.SomeColumn
WHERE logtime BETWEEN ''2014-10-10 07:17:00'' AND ''2014-10-10 08:47:00'''
Я решил это с помощью этого запроса SQL с помощью Giorgi