我试图在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;
但这不是让我在那里。来自不同列的值不再对应。 有什么猜测我怎么能得到这个? 感谢
答案 0 :(得分: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
答案 1 :(得分:0)
感谢回复, 我忘了指出的是,我实际上并没有在列中尝试第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
希望它有意义