选择访问数据库 (SQL) 中的第 N 个值



我正在尝试选择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 能够识别第三个(第 7 列)...我尝试了以下方法:

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;

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

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

感谢您的回复,我忘了指定的是,我实际上没有尝试列中的第 n 个单元格;它更多的是获取特定 colmn 中包含的第 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

希望这是有道理的

相关内容

  • 没有找到相关文章

最新更新