2010-05-04 105 views
1

我已经与数百列这个巨大的视图中选择在SELECT子句n列,我需要选择第114列是这样的:有没有办法从表/视图

SELECT "144" FROM MyView; 

PS:很明显,我不知道专栏的名字。我只是将结果行复制到Excel文件中,搜索EJ列中的特定值,因此我想选择显示仅视图中第n列的所有行,以进行进一步的调试。

干杯!

+0

这是什么类型的数据库? MSSQL? MySQL的?访问? ... – FrustratedWithFormsDesigner 2010-05-04 20:24:42

+0

SQL Server 2005 – 2010-05-04 20:26:09

回答

2

如果使用的是MS SQL Server,您可以

sp_help ViewName 

,然后滚动到列名第144列结果集,看看该列的名称。

此外,您可以在SQL Server Management Studio的结果窗格中选择“与标题一起复制”,并将结果集粘贴到Excel中,标题(列名)保持不变。

+0

谢谢,这符合我的目的,我会尽快接受答案(5分钟内)。 – 2010-05-04 20:31:01

0

不,您无法使用标准SQL或Oracle按索引进行选择。

但是,其他数据库供应商可能有自己的专有命令。

1

您可以在通用存储过程中使用以下内容,其中传递列名称,表名称和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 
+0

谢谢Dolph。我总是忘记发布的代码段功能。 – 2010-05-04 20:35:44

+0

重点是我不知道专栏名称。无论如何谢谢 – 2010-05-04 20:38:58

+0

我错过了这一点。 :( – 2010-05-04 20:41:14

1

我建议根据他们的Excel列名称给出所有列名称。应该有一个excel解决方案,使第一行等于列名(即AA,BB等)。然后进行导入,然后根据应该可计算的列名进行选择。

0

我遇到了同样的问题,并通过此代码解决了问题。 在存储过程中使用此

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); 
相关问题