2015-03-17 4 views
0

У меня есть sql-запрос, в этом SQL-запросе я хочу выбрать отдельные столбцы, независимо от первого столбца. Для другого sql-запроса я использую Row_number() OVER (раздел BY ..), и мне также нужно использовать внутреннее соединение. Запрос, в котором я хочу использовать row_number и внутреннее соединение является -Использование Row_number() OVER (partition BY ..) вместе с объявлением локальных переменных

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 в этом запросе.

+0

вы хотите добавить внутреннее соединение и row_number в динамическом SQL? Но вы хотите РАЗРЕШИТЬ, в какой колонке? Вы не поставляете достаточно информации, чтобы получить реальную помощь ... PRINT @sql вместо выполнения, чтобы увидеть запрос, который вы пытаетесь выполнить, и Google ROW_NUMBER – mxix

ответ

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-запрос с помощью Джорджи

Смежные вопросы