Tag: sql

在SQL查询中使用参数进行子查询

我有一个相当复杂的SQL查询嵌套子查询。 当我尝试在Microsoft Query中使用参数时,我说我可以在不能用graphics表示的查询中使用参数。 所以我需要另一个select。 我认为你可以把你的SQL查询放在一个单元格中,然后用一个macros来运行它。 任何想法我可以做到这一点? 谢谢 -Jesse

当列名是一个数字时,使用VB.NET中的ADO查询Excel

我正在使用VB.NET通过SQL查询使用ADO的Excel电子表格。 一般的方法是这样的: SELECT [firstname], [secondname] FROM [Sheet1$] 这是完美的 然而,其中一个标题被称为3,所以我想这样做: SELECT [firstname], [secondname], [3] FROM [Sheet1$] 但是,这是行不通的。 我知道我可以使用*来获取所有的列,但后来我想使用(使用dataReader): dr("3")这将无法正常工作 有任何想法吗?

从VBA调用SQL时的dynamicWHERE条件

在Excel中,我有一列ID。 我想select表中的值条件的ID列中的值。 到目前为止,我已经得到了这个,其中ws.Cells(i,10)指K列中每一行的值。 With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _ "ODBC;DSN=xxxx;Description=xxxxx;UID=xxx;APP=2007 Microsoft Office system;WSID=xxx" _ ), Array("56;DATABASE=xxx;Trusted_Connection=Yes")), Destination:=Range( _ "$M$3")).QueryTable For i = 1 To 691 sText = "SELECT Instrument.ID, Instrument.MATURITY FROM xxxx.dbo.Instrument Instrument WHERE Instrument.ID=" & ws.Cells(i, 10).Value & "" .CommandText = Array(sText) Next End With 我在行sText上得到一个错误“424”,错误信息“Object required”。 我也有预感,这不是做这件事的最好方法。 必须有一个更简单的设置来从列中运行WHERE条件的SQL。 谢谢你的帮助!

什么是计算安装基数最有效的方法?

我有一个要求,在不同的“环境”多年的不同的国家/地区,通过分配给每个单位的一定的“退休率”来计算不同的出货单位的出货量。 展示位置,曲线定义和曲线分配存储在不同的数据库表中(下面的DDL和示例数据也在SQLFiddle.com上 )。 计算安装基数的公式如下: 其中1990年是我们拥有数据的第一年。 问题: 使用3到1600万行单位/国家/环境/年份布置组合的数据集进行这些计算需要比30秒到1分钟的目标加载/计算时间多得多的时间。 Sql Server的方法 当PIVOT每年成为自己的专栏时,我会从100,000到400,000个返回的原始数据(展示位置+费率)中获得任何地方,大约需要8-15秒。 但是,如果我要通过下面的SQL语句手动计算,至less需要10分钟。 我们还尝试了一种SQL触发器解决scheme,在每次修改展示位置或费率时更新已安装的基础,但是这会使批量更新的数据库更新过于缓慢,而且也不可靠。 如果这真的是最好的select,我想这可能值得更多的调查。 Excel-VSTO方法(到目前为止,最快的方法): 这些数据最终以C#VSTO驱动的Excel工作簿结束,其中的数据是通过一系列VLOOKUPs计算的,但是当6年VLOOKUPs每个单元大约20个VLOOKUPs加载150,000个位置(大约2000万个VLOOKUPs )时,Excel崩溃。 当VLOOKUPs以较小批量完成并且公式被转换成值时,它不会崩溃,但仍然需要比一分钟计算更长的时间。 问题是: 是否有一些math或程序结构可以帮助我通过C#或SQL更有效地计算这些数据? 蛮力迭代也太慢了,所以这也不是一个选项。 DECLARE @Placements TABLE ( UnitId int not null, Environment varchar(50) not null, Country varchar(100) not null, YearColumn smallint not null, Placement decimal(18,2) not null, PRIMARY KEY (UnitId, Environment, Country, YearColumn) ) DECLARE @CurveAssignments TABLE ( […]

从Biztalk创build一个Excel输出文件,作为SQL查询的结果

我在SQL Server中有一个查询返回5列与一些数据。 我想创build一个BizTalk应用程序,将我的查询结果保存在Excel文件中。 我将创build一个SP轮询,使用wcf适配器来进行BT和SQL之间的通信。 我不知道如何生成一个file.xls 。 可能吗? 谢谢

如何使用adodb编写sql查询来select长度超过255个字符的数据

我正在使用ADODB连接写入SQL语句来提取数据在Excel VBA中。 我的问题是,我有一个单元格,其中包含超过255个字符的string。 我想知道是否有一种方法可以继续使用ADODB连接来select长度超过255个字符的数据 这是我使用的function。 Public Function QueryRead(sqlArg As String) As Dictionary Dim pConnection As ADODB.Connection Set pConnection = New ADODB.Connection With pConnection .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & ActiveWorkbook.FullName & _ ";Extended Properties=Excel 8.0;" '.Provider = "MSDASQL" '.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & App.Path & "\ExcelSrc.xls; " .CursorLocation […]

将expression式转换为数据typesfloat的算术溢出错误

对债券进行分析。 我试图做一个复制excel的PMTfunction的支付function。 对于债券,“Cusip”是他们的标识符,他们的“PASS THRU RATE”是他们的年利率,“ORIGINAL WA MATURITY”是期间的总数,“ORIGINAL BALANCE”是键。 用纸计算每月付款的等式是: M=[OF(i(1+i)^n)]/[(1+i)^(n-1)] M=Monthly payment OF=Original Face i=annual interest rate/12 n=number of periods 我有一个包含该函数所需的所有列的表格,以及不同月份的不同表格,我将尝试和使用它。 这是我到目前为止,创build该function,并尝试修复数据types: if object_id('dbo.PMT') > 0 drop function dbo.PMT go create function dbo.PMT(@rate numeric(15,9), @periods smallint, @principal numeric(20,2) ) returns numeric (38,9) as begin declare @pmt numeric (38,9) select @pmt = @principal / (power(1+@rate,@periods)-1) * […]

检查一个列是否存在于Excel工作表中

我一直在用一个程序,我导入2个Excel文件,这些Excel文件有不同的列名..所以这可能是用户导入错误的Excel文件(与其他列名)的可能性,我的问题是我正在使用OledbDataAdapter从excel读取数据,所以我必须指定每个列的名称,所以当用户导入错误的文件时,程序停止工作(因为程序无法find正确的列来获取数据)。 好吧,所以我的问题是,有没有办法检查一个列是否存在于特定的Excel表格中? 所以我可以做些什么,如果该列不存在于用户导入的文件… 这是我的代码的一部分: OleDbCommand command1 = new OleDbCommand( @"SELECT DISTINCT serie FROM [Sheet1$] WHERE serie =@MercEnInventario AND serie IS NOT NULL", connection); command1.Parameters.Add(new OleDbParameter("MercEnInventario", MercInv)); string serieN = Convert.ToString(command1.ExecuteScalar()); readerOle = command1.ExecuteReader(); readerOle.Close(); 当我尝试赋予string“serieN”的值时,我得到了一个OleDbException,因为列名“serie”在用户导入的excel文件中不存在。 如果你能帮助我,我会很感激:)

SSIS导入Excel文档使用列位置,而不是名称

我想知道是否可以通过引用一个列的位置使用SSIS导入Excel文档? 例如,导入列A,D,M,AA等。我问,因为我需要从第三方加载多个Excel文档。 每个文档在相应的列中包含相同的数据types,除了每个文档的列名不同。 谢谢!

SQL Query的date

这可能是一个非常简单的问题。 我在Excel中有一个非常基本的查询,从Sql Server 2008 R2的数据库中提取一些值。 这个数据库中的date字段存储为date时间。 在这个查询中,我对时间部分不感兴趣,所以只想selectdate。 我已经尝试使用Cast或Convert,但是都将sql(yyyy-mm-dd)中的date返回给Excel。 Excel将其识别为文本而不是date,因此一旦数据在Excel中,我无法在表格中执行datefilter。 如果我在Excel中做datepart(),它将它显示为一个date,我可以按预期进行过滤,但是我希望直接来自查询的数据返回为Excel可以过滤的date值。 以下是我的示例查询: SELECT order_header.oh_id, order_header.oh_order_number, order_header.oh_datetime, convert(date, order_header.oh_datetime, 103) as 'ConvertOrderDate', cast(order_header.oh_datetime as date) as 'CastOrderDate' FROM order_header WHERE order_header.oh_datetime >= '2013-09-01' 当把这个返回给Excel时,这就是返回的内容: 输出图像http://img834.imageshack.us/img834/4417/7gbg.png