Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS SQL Excel的Excel文件、案例陈述或备选方案_Sql_Excel_Ms Query - Fatal编程技术网

MS SQL Excel的Excel文件、案例陈述或备选方案

MS SQL Excel的Excel文件、案例陈述或备选方案,sql,excel,ms-query,Sql,Excel,Ms Query,我有一个excel文件用于处理数据。它是通过一个.csv文件输入的,我想输出几个不同的表,每个表都以不同的方式处理数据。初始设置完成后,执行此任务的人将不再是我。在探索了许多方法之后(例如设置SQL或Access数据库/使用读取和处理数据的excel函数),我决定在导入.csv后使用excel文件进行自我查询 我发现如何使用以下方法: SQL的方言我不熟悉,我能找到的唯一参考是: 这在大多数情况下都有效。在某些情况下,jetsql可以工作,但在其他情况下它会返回错误 我在表中有三列,Cust

我有一个excel文件用于处理数据。它是通过一个.csv文件输入的,我想输出几个不同的表,每个表都以不同的方式处理数据。初始设置完成后,执行此任务的人将不再是我。在探索了许多方法之后(例如设置SQL或Access数据库/使用读取和处理数据的excel函数),我决定在导入.csv后使用excel文件进行自我查询

我发现如何使用以下方法:

SQL的方言我不熟悉,我能找到的唯一参考是: 这在大多数情况下都有效。在某些情况下,jetsql可以工作,但在其他情况下它会返回错误

我在表中有三列,Cust Status,'MinDateFiledBorrower'和'MinDateFiledBorrower'。日期字段中的一个或两个字段可能包含数据,或者其中一个字段可能为空。我正试图获得借款人和合作者的最短日期。我似乎在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$`
选择
`卸货组合$``客户状态`
,`DischargeCombine$`.`MindateFiledBorLower'`
,`DischargeCombine$`.`MinDateFileDCoorror'`
,当'DischargeCombine$`.'MinDateFiledBorLower'为空时,则为'DischargeCombine$`.'MinDateFiledBorLower'`
当'DischargeCombine$`.'MinDateFiledBorrower'为空时,则'DischargeCombine$`.'MinDateFiledBorrower'`
当'DischargeCombine$`.'MinDateFiledBorLower'>='DischargeCombine$`.'MinDateFiledBorrower'时,则'DischargeCombine$`.'MinDateFiledBorrower'`

当'DischargeCombine$`.'MinDateFiledBorrower'MS Access Jet/ACE SQL引擎不支持ANSI-92
CASE
语句时,我在该语句中提出了一个与其他缺少的ANSI方法不同的方言

而不是<代码> CASE < /代码>,考虑嵌套函数用于条件逻辑。下面的调整还使用了一个短表别名,以避免长而重复的标识符:

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

另外,MS Access实际上是Jet/ACE引擎(.dll文件)的GUI,您可以使用它来查询Excel工作簿,还可以查询本机Jet/ACE表,甚至可以查询CSV文件。事实上,查询
.mdb
.accdb
以及类似的
.xls、.xlsx、.xlsm、.xlsb
文件不需要安装MSAccess.exe程序。

有趣的是,当Access可以读取CSV和Excel文件并在其自己的表上运行SQL查询时,您就绕过了MS Access来获得Excel解决方案。事实上,查询工作簿与查询Access数据库是同一个引擎!我认为喷气式飞机驾驶员不支持背部的滴答声。你试过用方括号吗?如果您将数据放入SQL Server、SQLite、postgreSQL。。。如果您继续使用access引擎的SQL,那么至少可以使用ACE驱动程序而不是Jet(仍然很难按照您的喜好构造查询)。这正是我要寻找的。非常感谢。我遇到了其他问题,当我尝试使用别名或子组时,excel文件会抛出错误。它最初并没有这样做,可能是它自己的表单上有太多的查询。我想我会再次尝试MS Access。
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