Есть ли способ выбрать n-й столбец в предложении SELECT из таблицы / представления - PullRequest
2 голосов
/ 05 мая 2010

У меня это гигантское представление с несколькими сотнями столбцов, и мне нужно выбрать 114-й столбец, например:

SELECT "144" FROM MyView;

PS: Очевидно, я не знаю названия столбца. Я просто скопировал строку результатов в файл Excel, искал определенное значение в столбце EJ, поэтому я хочу выбрать все строки, отображающие только n-й столбец в моем представлении, для дальнейшей отладки.

ура!

Ответы [ 5 ]

2 голосов
/ 05 мая 2010

Если вы используете MS SQL Server, вы можете

sp_help ViewName

и затем прокрутите до 144-го столбца в наборе результатов Column_name, чтобы увидеть, как называется этот столбец.

Кроме того, вы можете выбрать «Копировать с заголовками» в области результатов в SQL Server Management Studio и вставить набор результатов в Excel с неповрежденными заголовками (именами столбцов).

1 голос
/ 05 мая 2010

Вы можете использовать следующее в общей хранимой процедуре, где вы передаете имя столбца, имя таблицы и значение n. Это будет работать на MSSQL 2000 - 2008.

CREATE PROC usp_select_Nth 
(
    @table_name sysname,
    @column_name sysname,
    @nth int
)
AS
BEGIN

SET @exec = 'SELECT MAX(' + @column_name + ') from ' + @table_name + ' WHERE ' + @column_name + ' NOT IN ( SELECT TOP ' + LTRIM(STR(@nth - 1)) + ' ' + @column_name + ' FROM ' + @table_name + ' ORDER BY ' + @column_name + ' DESC )'
EXEC (@exec)

END
1 голос
/ 05 мая 2010

Я бы предложил дать имена всех столбцов в зависимости от их имени в столбце Excel. Должно быть превосходное решение, чтобы первая строка соответствовала имени столбца (т.е. AA, BB и т. Д.). Затем выполните импорт, затем выберите на основе имени столбца, который должен быть вычисляемым.

0 голосов
/ 08 января 2014

У меня была такая же проблема, и я решил ее с помощью этого кода. Используйте это в хранимой процедуре

DECLARE @TableName as nVarchar(100);
DECLARE @NthColumn as Int

--we are fetching 1st column here.

SELECT 

@TableName =N'YOURTABLE',
@NthColumn=1 --Change if necessary

DECLARE @ColumnName as varchar(100);
SELECT @ColumnName = Col_name(object_id(@TableName),@NthColumn); 

EXEC ('SELECT ' + @ColumnName + ' FROM ' + @TableName);
0 голосов
/ 05 мая 2010

Нет, вы не можете выбирать по индексу, используя стандартный SQL или Oracle.

Однако для этого у других поставщиков баз данных может быть своя собственная проприетарная команда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...