SQL Jet 访问、插入列和排序依据

Posted

技术标签:

【中文标题】SQL Jet 访问、插入列和排序依据【英文标题】:SQL Jet Access, Insert Column and Order by 【发布时间】:2018-09-17 14:14:54 【问题描述】:

我通过 excel 使用Microsoft.ACE.OLEDB.12.0 连接在我的工作簿中进行内部查询。

如何在查询中插入列 Year 并对其进行排序,以使它们不在一起。所以他们会一个接一个地重复?

Year 列已添加,但现在订购是问题。

这是我当前的查询

select [Data Type], [Currency], [Book Name], [1987] as Value
from [stage2$]
UNION ALL
select [Data Type], [Currency], [Book Name], [1990]
from [stage2$]

当前数据:

+--------------------------------+----------+-------+---------------+
|           Data Type            | Currency | Name  |   value       |
+--------------------------------+----------+-------+--------------
| Missing Non Historical Results | BSD      | Carib | (279)         |
| Missing Non Historical Results | BSD      | Carib |   18          |
| Missing Non Historical Results | BSD      | Carib |   898         |
| Missing Non Historical Results | BSD      | Carib |  (50)         |
+--------------------------------+----------+-------+---------------+

预期结果:

+--------------------------------+----------+-------+---------------+---------+
|           Data Type            | Currency | Name  | Year          |  value  |
+--------------------------------+----------+-------+---------------+---------+
| Missing Non Historical Results | BSD      | Carib |          1987 |  (279)  |
| Missing Non Historical Results | BSD      | Carib |          1990 |  898    |
| Missing Non Historical Results | BSD      | Carib |          1987 |  18     |
| Missing Non Historical Results | BSD      | Carib |          1990 |  (50)   |
+--------------------------------+----------+-------+---------------+---------+

【问题讨论】:

你不能。从您的示例数据中,没有任何迹象表明为什么任何记录应该标记为 1987 年或 1990 年。 【参考方案1】:

您可以在select 语句中添加另一列:

select [Data Type], [Currency], [Book Name], '1987' as Year, [1987] as Value
from [stage2$]
UNION ALL
select [Data Type], [Currency], [Book Name], '1990' as Year, [1990]
from [stage2$]
order by Year

【讨论】:

我遇到了一些问题,19871990 因为 YearValues 中仍然给出相同的数据,但是 "1987""1990" 带有引号似乎给出正确的结果,但现在我需要一个接一个地订购它们,而不是全部 1987 然后全部 1990 @excelguy 你可以order by任何你需要的字段,只需要改变最后一行。快速说明,没有order by 子句,您无法保证结果的顺序。 我不确定我是否理解。我想像这样订购,1987,然后是1990,然后是1987,然后是1990Year 中的交替值

以上是关于SQL Jet 访问、插入列和排序依据的主要内容,如果未能解决你的问题,请参考以下文章

PL-SQL 操作列和插入

SQL Server:结合日期列和时间列,插入到日期时间列

Excel-VBA 访问 sql server 表进行选择和插入太慢

SQL 动态列和更新多列

在sql里面用sysadmin权限插入excel时可以完成插入,但是换成别的权限就不可以插入了,报下面的错

希尔排序过程始末