我正在尝试选择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
希望这是有道理的