MS Access有一个button来生成用于查找重复行的sql代码。 我不知道SQL Server 2005/2008 Managment Studio是否有这个function。 如果有,请指向哪里 如果没有,请告诉我如何有一个T-SQL助手来创build这样的代码。
MS SQL有一个方便的解决方法,用于将来自多行的列值连接成一个值: SELECT col1 FROM table1 WHERE col2 = 'x' ORDER by col3 FOR XML path('') 并返回一个不错的logging集: XML_F52E2B61-18A1-11d1-B105-00805F49916B —————————————- <col1>Foo</col1><col1>Bar</col1> 只有返回的logging集中的列名是相当讨厌的! 列名似乎包括随机元素(或GUID),因此我不愿意在我的应用程序中使用它(不同的实例或不同的服务器可能有另一个GUID)。 不幸的是,我不能使用*来select值,由于现有的应用程序的限制,我不能遍历返回的列,要么… 有没有办法强制返回的logging集中的列名更明智一些?
因此,Oracle有NULLS FIRST,我可以使用空值在顶部sorting,然后按降序排列我的列值: ORDER BY date_sent NULLS FIRST 在SQL Server中有什么可比的? 假设date值为NULL或过去有以下替代scheme: ORDER BY ISNULL(date_sent, GETDATE()) DESC ORDER BY (CASE WHEN t.setinactive IS NULL THEN 1 ELSE 2 END), t.setinactive DESC ORDER BY -CAST(date_sent as int) ASC 其他人?
如何在不使用存储过程的情况下将variables设置为select查询的结果? 我想做类似于:OOdate DATETIME SET OOdate = Select OO.Date FROM OLAP.OutageHours as OO WHERE OO.OutageID = 1 然后我想在这个查询中使用OOdate: SELECT COUNT(FF.HALID) from Outages.FaultsInOutages as OFIO INNER join Faults.Faults as FF ON FF.HALID = OFIO.HALID WHERE CONVERT(VARCHAR(10),OO.Date,126) = CONVERT(VARCHAR(10),FF.FaultDate,126)) AND OFIO.OutageID = 1
你如何在Microsoft SQL Server 2005中说下面的内容: IF EXISTS (SELECT * FROM Table WHERE FieldValue='') THEN SELECT TableID FROM Table WHERE FieldValue='' ELSE INSERT INTO TABLE(FieldValue) VALUES('') SELECT TableID FROM Table WHERE TableID=SCOPE_IDENTITY() END IF 我想要做的是看看是否有一个空白fieldvalue,如果有,然后返回该TableID,否则插入一个空白的fieldvalue并返回相应的主键。
我想要一个查询插入logging从一个表到另一个表在不同的数据库中,如果目标表已经存在,它应该追加logging在表的末尾。 请帮帮我。 提前致谢。
我从另一个表B插入多个logging到表A中。有没有办法获得表A的logging的身份值和更新表B的logging与做游标吗? Create Table A (id int identity, Fname nvarchar(50), Lname nvarchar(50)) Create Table B (Fname nvarchar(50), Lname nvarchar(50), NewId int) Insert into A(fname, lname) SELECT fname, lname FROM B 我正在使用MS SQL Server 2005。
在我的存储过程中,我有三个插入语句。 在重复键值插入前两个查询生成错误 违反PRIMARY KEY约束 第三个查询像往常一样运行。 现在我想,如果任何查询产生任何exception,一切都应该回滚。 如果没有任何查询产生任何exception,它应该被提交。 declare @QuantitySelected as char set @QuantitySelected = 2 declare @sqlHeader as varchar(1000) declare @sqlTotals as varchar(1000) declare @sqlLine as varchar(1000) select @sqlHeader = 'Insert into tblKP_EstimateHeader ' select @sqlHeader = @sqlHeader + '(CompanyID,CompanyName,ProjectName,EstimateID,EstimateHeader,QuoteDate,ValidUntil,RFQNum,Revision,Contact,Status,NumConfigurations) ' select @sqlHeader = @sqlHeader + ' select CompanyID,CompanyName,ProjectName,EstimateID,EstimateHeader,QuoteDate,ValidUntil,RFQNum,Revision,Contact,Status,NumConfigurations ' select @sqlHeader = @sqlHeader + […]
考虑这个触发器: ALTER TRIGGER myTrigger ON someTable AFTER INSERT AS BEGIN DELETE FROM someTable WHERE ISNUMERIC(someField) = 1 END 我有一个表,someTable,我试图阻止人们插入不良logging。 为了这个问题的目的,一个不好的logging有一个全是数字的字段“someField”。 当然,正确的做法不是触发器,但我不控制源代码…只是SQL数据库。 所以我不能真的阻止坏行的插入,但我可以马上删除它,这足以满足我的需求。 触发器工作,有一个问题…当它触发,它似乎永远不会删除刚刚插入的坏logging…它删除任何旧的坏logging,但它不会删除刚插入的坏logging。 所以经常有一个错误的logging被移除,直到其他人出现,并且执行另一个INSERT。 这是我理解触发器的问题吗? 在触发器运行时新插入的行还没有被提交?
我想从c#代码批量上传CSV文件数据到SQL Server 2005,但我遇到了下面的错误 – 从bcp客户端收到colid 6的无效列长度。 当批量复制写入数据库服务器时