0

我正在尝试在 Access 数据库中选择特定值。所以数据库包含很多列,我只能选择第一个值,或者最后一个:

SELECT Column1, First(Column7) AS Column7_1, First(Column8) AS FirstOfColumn8, [Column1] & [Column7_1] AS [Column1&Column7]
FROM [Table1]
GROUP BY Column1;

现在我想弄清楚的是如何获得这些列中的第 n 个值。如果 SQL 能够识别第三列(Column7),那将是完美的……我尝试了以下方法:

SELECT Column1, First(Column7) AS Column7_1, First(Column8) AS FirstOfColumn8, [Column1] & [Column7_1] AS [Column1&Column7]
FROM [Table1]
WHERE Column7 > (SELECT First(Column7) FROM [Table1]) AND Column8 > SELECT First(Column8) FROM [Table1]) 
GROUP BY Column1;

但这并没有让我到达那里。来自不同列的值不再对应。猜猜我怎么能得到这个?谢谢

4

2 回答 2

0

AFAIK,SQL 并不真正支持使用上述语法按列号选择一列。

类似于以下内容的东西可以解决问题(使用动态 SQL):

get list of column names in given table*
for each column name
  do this
end

*以下查询可能有用!

SELECT s.NAME SchemaName, 
       t.NAME TableName, 
       c.NAME ColumnName 
FROM   sys.columns c 
       INNER JOIN sys.tables t 
               ON c.object_id = t.object_id 
       INNER JOIN sys.schemas s 
               ON t.schema_id = s.schema_id
于 2014-11-17T13:26:22.580 回答
0

感谢您的回复,我忘记指定的是我实际上并没有尝试列中的第 n 个单元格;它更多的是关于获取特定列中包含的第 n 个值。例如,取下表

Column1  Column2  Column3
A1       Prop1     20
A1       Prop1     20
A2       Prop2     15
A2       Prop1     20
A3       Prop2     15
A3       Prop3     5 
A3       Prop3     5 
A4       Prop1     20
A4       Prop2     15
A4       Prop3     5
A4       Prop4     10

因此,我想为每个 column1id 从第 2 列中选择第 n 个值,以便获取第一个元素:

Column1  Column2  Column3
A1       Prop1     20
A2       Prop1     20
A3       Prop2     15
A4       Prop1     20 

对于第二个元素:

Column1  Column2  Column3

    A2       Prop2     15
    A3       Prop3     5 
    A4       Prop2     15

对于第四个:

Column1  Column2  Column3

    A4       Prop4     10

希望这是有道理的

于 2014-11-17T14:04:19.533 回答