MS SQL Excel of Excel 文件、案例陈述或替代
MS SQL Excel of Excel Files, Case Statements or Alternative
我有一个 excel 文件用于处理数据。它通过一个 .csv 文件进入,我想输出很多不同的工作表,每个工作表都以不同的方式处理数据。初始设置完成后,执行此任务的人将不是我。在探索了许多这样做的方法之后,(为读取和处理数据的 example/using excel 函数设置 SQL 或 Access 数据库)我选择了一个 Excel 文件查询导入 .csv 后本身。
我发现了如何使用以下方法:
How to run a SQL query on an Excel table?
SQL的方言对我来说很陌生,唯一能找到的参考资料是:
https://support.microsoft.com/en-us/help/136699/description-of-the-usage-of-joins-in-microsoft-query
在大多数情况下都有效。在某些情况下,Jet SQL 可以工作,但有时它会 returns 出错。
我在 table、客户状态、'MinDateFiledBorrower' 和 'MinDateFiledCoBorrower' 中有三列。日期字段中的一个或两个可能包含数据,或者其中一个可能为 NULL。我正在尝试获取借款人和共同借款人的最短日期。我似乎无法在 JetSQL 中找到 Case 语句的语法,而且我在尝试时收到的错误让我怀疑它们不受支持。
数据:
Cust Status 'MinDateFiledBorrower' 'MinDateFiledCoBorrower'
B-1001 9/15/2004 0:00 11/1/2006 0:00
B-1002 9/17/2004 0:00 11/9/2006 0:00
B-1003 10/7/2004 0:00 NULL
B-1004 NULL 10/14/2004 0:00
B-1005 9/23/2004 0:00 12/21/2006 0:00
B-1007 10/19/2004 0:00 2/12/2007 0:00
B-1008 10/22/2004 0:00 2/8/2007 0:00
B-101 NULL 12/11/2001 0:00
B-1010 10/25/2004 0:00 NULL
B-1011 10/28/2004 0:00 6/8/2007 0:00
B-1012 11/4/2004 0:00 6/28/2007 0:00
B-2298 5/12/2005 0:00 NULL
B-23 NULL 2/26/2007 0:00
B-230 NULL 5/15/2012 0:00
B-2300 NULL 5/24/2005 0:00
B-2301 NULL 6/30/2005 0:00
我最近的尝试:
select
`DischargeCombine$`.`Cust Status`
,`DischargeCombine$`.`'MinDateFiledBorrower'`
,`DischargeCombine$`.`'MinDateFiledCoBorrower'`
,case when `DischargeCombine$`.`'MinDateFiledBorrower'` is null then `DischargeCombine$`.`'MinDateFiledCoBorrower'`
when `DischargeCombine$`.`'MinDateFiledCoBorrower'` is null then `DischargeCombine$`.`'MinDateFiledBorrower'`
when `DischargeCombine$`.`'MinDateFiledBorrower'`>=`DischargeCombine$`.`'MinDateFiledCoBorrower'` then `DischargeCombine$`.`'MinDateFiledCoBorrower'`
when `DischargeCombine$`.`'MinDateFiledBorrower'`<`DischargeCombine$`.`'MinDateFiledCoBorrower'` then `DischargeCombine$`.`'MinDateFiledBorrower'` end as FirstDischarge
from `C:\Query Exports\BK Scrub Processing File.xlsx`.`DischargeCombine$` `DischargeCombine$`
Returns 错误 "Didn't expect 'DischargeCombine$
' after the SELECT column list." 它没有行标记,但我猜它表示案例陈述的第一个 DischargeCombine$
。
如有任何帮助,我们将不胜感激!
MS Access Jet/ACE SQL 引擎不支持 ANSI-92 CASE
声明,其中我提出了 ticket 以及其他缺少的 ANSI 方法。
而不是CASE
,考虑一个用于条件逻辑的嵌套IIF
函数。下面的调整也使用短 table 别名来避免长而重复的标识符:
select
d.`Cust Status`
, d.`'MinDateFiledBorrower'`
, d.`'MinDateFiledCoBorrower'`
, iif(d.`'MinDateFiledBorrower'` is null, d.`'MinDateFiledCoBorrower'`,
iif(d.`'MinDateFiledCoBorrower'` is null, d.`'MinDateFiledBorrower'`,
iif( d.`'MinDateFiledBorrower'` >= d.`'MinDateFiledCoBorrower'`, d.`'MinDateFiledCoBorrower'`,
iif(d.`'MinDateFiledBorrower'` < d.`'MinDateFiledCoBorrower'`, d.`'MinDateFiledBorrower'`, null
)
)
)
) as FirstDischarge
from `C:\Query Exports\BK Scrub Processing File.xlsx`.`DischargeCombine$` d
或者,考虑 SWITCH
(从 VBA 借用的 Access SQL 特定方法):
select
d.`Cust Status`
, d.`'MinDateFiledBorrower'`
, d.`'MinDateFiledCoBorrower'`
, switch(d.`'MinDateFiledBorrower'` is null, d.`'MinDateFiledCoBorrower'`,
d.`'MinDateFiledCoBorrower'` is null, d.`'MinDateFiledBorrower'`,
d.`'MinDateFiledBorrower'` >= d.`'MinDateFiledCoBorrower'`, d.`'MinDateFiledCoBorrower'`,
d.`'MinDateFiledBorrower'` < d.`'MinDateFiledCoBorrower'`, d.`'MinDateFiledBorrower'`
) as FirstDischarge
from `C:\Query Exports\BK Scrub Processing File.xlsx`.`DischargeCombine$` d
顺便说一句,MS Access 实际上是 Jet/ACE 引擎(.dll 文件)的 GUI,您可以使用它来查询 Excel 工作簿,也可以查询本机 Jet/ACE tables,甚至查询CSV文件。事实上,不需要安装 MSAccess.exe 程序来查询 .mdb
或 .accdb
以及 .xls, .xlsx, .xlsm, .xlsb
文件。
我有一个 excel 文件用于处理数据。它通过一个 .csv 文件进入,我想输出很多不同的工作表,每个工作表都以不同的方式处理数据。初始设置完成后,执行此任务的人将不是我。在探索了许多这样做的方法之后,(为读取和处理数据的 example/using excel 函数设置 SQL 或 Access 数据库)我选择了一个 Excel 文件查询导入 .csv 后本身。
我发现了如何使用以下方法: How to run a SQL query on an Excel table?
SQL的方言对我来说很陌生,唯一能找到的参考资料是: https://support.microsoft.com/en-us/help/136699/description-of-the-usage-of-joins-in-microsoft-query 在大多数情况下都有效。在某些情况下,Jet SQL 可以工作,但有时它会 returns 出错。
我在 table、客户状态、'MinDateFiledBorrower' 和 'MinDateFiledCoBorrower' 中有三列。日期字段中的一个或两个可能包含数据,或者其中一个可能为 NULL。我正在尝试获取借款人和共同借款人的最短日期。我似乎无法在 JetSQL 中找到 Case 语句的语法,而且我在尝试时收到的错误让我怀疑它们不受支持。
数据:
Cust Status 'MinDateFiledBorrower' 'MinDateFiledCoBorrower'
B-1001 9/15/2004 0:00 11/1/2006 0:00
B-1002 9/17/2004 0:00 11/9/2006 0:00
B-1003 10/7/2004 0:00 NULL
B-1004 NULL 10/14/2004 0:00
B-1005 9/23/2004 0:00 12/21/2006 0:00
B-1007 10/19/2004 0:00 2/12/2007 0:00
B-1008 10/22/2004 0:00 2/8/2007 0:00
B-101 NULL 12/11/2001 0:00
B-1010 10/25/2004 0:00 NULL
B-1011 10/28/2004 0:00 6/8/2007 0:00
B-1012 11/4/2004 0:00 6/28/2007 0:00
B-2298 5/12/2005 0:00 NULL
B-23 NULL 2/26/2007 0:00
B-230 NULL 5/15/2012 0:00
B-2300 NULL 5/24/2005 0:00
B-2301 NULL 6/30/2005 0:00
我最近的尝试:
select
`DischargeCombine$`.`Cust Status`
,`DischargeCombine$`.`'MinDateFiledBorrower'`
,`DischargeCombine$`.`'MinDateFiledCoBorrower'`
,case when `DischargeCombine$`.`'MinDateFiledBorrower'` is null then `DischargeCombine$`.`'MinDateFiledCoBorrower'`
when `DischargeCombine$`.`'MinDateFiledCoBorrower'` is null then `DischargeCombine$`.`'MinDateFiledBorrower'`
when `DischargeCombine$`.`'MinDateFiledBorrower'`>=`DischargeCombine$`.`'MinDateFiledCoBorrower'` then `DischargeCombine$`.`'MinDateFiledCoBorrower'`
when `DischargeCombine$`.`'MinDateFiledBorrower'`<`DischargeCombine$`.`'MinDateFiledCoBorrower'` then `DischargeCombine$`.`'MinDateFiledBorrower'` end as FirstDischarge
from `C:\Query Exports\BK Scrub Processing File.xlsx`.`DischargeCombine$` `DischargeCombine$`
Returns 错误 "Didn't expect 'DischargeCombine$
' after the SELECT column list." 它没有行标记,但我猜它表示案例陈述的第一个 DischargeCombine$
。
如有任何帮助,我们将不胜感激!
MS Access Jet/ACE SQL 引擎不支持 ANSI-92 CASE
声明,其中我提出了 ticket 以及其他缺少的 ANSI 方法。
而不是CASE
,考虑一个用于条件逻辑的嵌套IIF
函数。下面的调整也使用短 table 别名来避免长而重复的标识符:
select
d.`Cust Status`
, d.`'MinDateFiledBorrower'`
, d.`'MinDateFiledCoBorrower'`
, iif(d.`'MinDateFiledBorrower'` is null, d.`'MinDateFiledCoBorrower'`,
iif(d.`'MinDateFiledCoBorrower'` is null, d.`'MinDateFiledBorrower'`,
iif( d.`'MinDateFiledBorrower'` >= d.`'MinDateFiledCoBorrower'`, d.`'MinDateFiledCoBorrower'`,
iif(d.`'MinDateFiledBorrower'` < d.`'MinDateFiledCoBorrower'`, d.`'MinDateFiledBorrower'`, null
)
)
)
) as FirstDischarge
from `C:\Query Exports\BK Scrub Processing File.xlsx`.`DischargeCombine$` d
或者,考虑 SWITCH
(从 VBA 借用的 Access SQL 特定方法):
select
d.`Cust Status`
, d.`'MinDateFiledBorrower'`
, d.`'MinDateFiledCoBorrower'`
, switch(d.`'MinDateFiledBorrower'` is null, d.`'MinDateFiledCoBorrower'`,
d.`'MinDateFiledCoBorrower'` is null, d.`'MinDateFiledBorrower'`,
d.`'MinDateFiledBorrower'` >= d.`'MinDateFiledCoBorrower'`, d.`'MinDateFiledCoBorrower'`,
d.`'MinDateFiledBorrower'` < d.`'MinDateFiledCoBorrower'`, d.`'MinDateFiledBorrower'`
) as FirstDischarge
from `C:\Query Exports\BK Scrub Processing File.xlsx`.`DischargeCombine$` d
顺便说一句,MS Access 实际上是 Jet/ACE 引擎(.dll 文件)的 GUI,您可以使用它来查询 Excel 工作簿,也可以查询本机 Jet/ACE tables,甚至查询CSV文件。事实上,不需要安装 MSAccess.exe 程序来查询 .mdb
或 .accdb
以及 .xls, .xlsx, .xlsm, .xlsb
文件。