小编Mik*_*son的帖子

使用merge..output获取source.id和target.id之间的映射

很简单,我有两个表Source和Target.

declare @Source table (SourceID int identity(1,2), SourceName varchar(50))
declare @Target table (TargetID int identity(2,2), TargetName varchar(50))

insert into @Source values ('Row 1'), ('Row 2')
Run Code Online (Sandbox Code Playgroud)

我想将所有行移动@Source@Target并知道TargetID每个行,SourceID因为还有表格SourceChild,TargetChild并且需要复制,我需要将新行添加TargetIDTargetChild.TargetIDFK列中.

有几个解决方案.

  1. 使用while循环或游标一次向Target插入一行(RBAR)并使用scope_identity()填充FK TargetChild.
  2. 添加临时列@Target并插入SourceID.然后,您可以加入该列以获取TargetIDFK中的内容TargetChild.
  3. SET IDENTITY_INSERT OFFfor @Target和处理自己分配新值.您将获得一个然后使用的范围TargetChild.TargetID.

我不是那么喜欢他们中的任何人.我到目前为止使用的是游标.

我真正想要做的是使用outputinsert语句的子句.

insert into @Target(TargetName)
output inserted.TargetID, S.SourceID
select SourceName
from @Source as …
Run Code Online (Sandbox Code Playgroud)

sql-server merge sql-server-2008

60
推荐指数
1
解决办法
2万
查看次数

在SQL Server中解析XML

XML看起来像这样:

<GespeicherteDaten>
    <strategieWuerfelFelder Type="strategieWuerfelFelder">
        <Felder X="3" Y="3" Z="3">
            <Feld X="1" Y="1" Z="1">
                <strategieWuerfelFeld Type="strategieWuerfelFeld">
                    <Name>Name</Name>
                    <Beschreibung>Test</Beschreibung>
                </strategieWuerfelFeld>
            </Feld>
            <Feld X="1" Y="1" Z="2">
                <strategieWuerfelFeld Type="strategieWuerfelFeld">
                    <Name>Name2</Name>
                    <Beschreibung>Test2</Beschreibung>
                </strategieWuerfelFeld>
            </Feld>
        </Felder>
    </strategieWuerfelFelder>
</GespeicherteDaten>'
Run Code Online (Sandbox Code Playgroud)

我的结果表应包含Felder-> X,Y,Z,Feld-> X,Y,Z和Name属性.

喜欢:

Felder_X | Felder_Y | Felder_Z | Feld_X | Feld_Y | Feld_Z | Name
Run Code Online (Sandbox Code Playgroud)

是否可以直接从查询或存储过程获取此值?

xml sql-server sql-server-2005

22
推荐指数
2
解决办法
8万
查看次数

从两列中选择不同的组合

我在表Hyperlink中有两列,源和目标,用于存储超链接的源和目标.

source | destination 
-------------------- 
  a    |  b 
  b    |  c 
  c    |  d 
  c    |  b 
Run Code Online (Sandbox Code Playgroud)

有两个超链接涉及b和c.两个超链接之间的区别是超链接的方向.但是,我的目标是检索唯一的超链接,无论哪个方向.因此,对于从b到c和从c到b的超链接,我只想选择其中一个.任何人都会这样做.

所以我的结果应该是这样的:

source | destination 
-------------------- 
  a    |  b 
  b    |  c 
  c    |  d 
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能够在Java中实现这一点,在使用JDBC执行SQL语句之前进行一些处理.然而,当桌子变得非常大时,这将非常繁琐.

我想知道无论如何我都可以用SQL来做这件事.

我尝试了,SELECT DISTINCT source,destination FROM Hyperlink但它返回了我独特的排列.我需要独特的组合.

谢谢!

mysql sql

14
推荐指数
1
解决办法
3485
查看次数

SQL Server格式日期DD.MM.YYYY HH:MM:SS

我怎么能得到像'dd.mm.yyyy HH:MM:SS'这样的日期我试过以下但是这不是我正在寻找的......

select convert(varchar(20),getdate(),113)
Run Code Online (Sandbox Code Playgroud)

结果:2011年7月14日09:23:57

非常感谢Largo

sql-server format date

13
推荐指数
2
解决办法
9万
查看次数

使用SQL选择单个xml节点

我有一个包含许多节点的大型XML注释.

有没有一种方法可以从较大的XML中只选择一个节点及其所有内容?

我正在使用sql 2005

sql-server sql-server-2005 xquery-sql

13
推荐指数
1
解决办法
4万
查看次数

带有子句与临时表的SQL Server

我也可以

select * into #randomTenUsers from
(select top 10 * from users)x    

select * from #randomTenUsers
Run Code Online (Sandbox Code Playgroud)

要么

WITH randomTenUsers   as (select top 10 * from users)    

select * from randomTenUsers
Run Code Online (Sandbox Code Playgroud)

根据我的理解,WITH语句还会创建一个临时结果集.

有没有理由认为WITH应优先于临时表,反之亦然?

sql-server sql-server-2008-r2

12
推荐指数
1
解决办法
3万
查看次数

T-sql重置字段更改时的行号

我现在已经挣扎了整整三天了,我无法理解这一点.它与我最近发布的"t-sql sequential duration"相似,但不完全一样......我想根据列x的变化重置行号(在我的情况下,列"who")......

这是第一个返回原始(ish)数据的小样本的查询:

SELECT      DISTINCT chr.custno, 
            CAST(LEFT(CONVERT( VARCHAR(20),chr.moddate,112),10)+ ' ' + chr.modtime AS DATETIME)as  moddate, 
            chr.who     
FROM        <TABLE> chr 
WHERE       chr.custno = 581827
            AND LEFT(chr.who, 5) = 'EMSZC'
            AND chr.[description] NOT LIKE 'Recalled and viewed this customer'
ORDER BY    chr.custno
Run Code Online (Sandbox Code Playgroud)

结果:

custno      moddate             who
581827      2012-11-08 08:38:00.000     EMSZC14
581827      2012-11-08 08:41:10.000     EMSZC14
581827      2012-11-08 08:53:46.000     EMSZC14
581827      2012-11-08 08:57:04.000     EMSZC14
581827      2012-11-08 08:58:35.000     EMSZC14
581827      2012-11-08 08:59:13.000     EMSZC14
581827      2012-11-08 09:00:06.000     EMSZC14
581827      2012-11-08 09:04:39.000     EMSZC49 Reset row number …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2005 row-number reset

11
推荐指数
3
解决办法
2万
查看次数

如何在SQL中将文本列转换为datetime

我有一个文本列:

备注(text,null)

示例值为"5/21/2013 9:45:48 AM"

如何将其转换为这样的日期时间格式:"2013-05-21 09:45:48.000"

转换的原因是我试图获取日期时间列和备注列中日期戳之间的总小时数.我在考虑这样的事情:

备注(text,null) - Date_Sent(datetime,null)

需要说明的是,列表示客户发出的查询发送的日期时间(Date_Sent)以及代表对查询(响应)的最后响应,因此对于具有值"2013-05-"的Date_Sent样本21 08:00:00.000"和一个值为"5/21/2013 10:00:00 AM"的响应",我应该得到2.00(2小时)的值.不幸的是,在我正在处理的数据库中,备注是一个文本,Date_Sent是一个日期时间.

我对SQL很新,所以我真的需要帮助:( TIA!

sql-server datetime text sql-server-2008

11
推荐指数
2
解决办法
13万
查看次数

随着xml文档的增长,交叉应用xml查询的性能呈指数级下降

是)我有的

我有一个可变大小的XML文档,需要在MSSQL 2008 R2上解析,如下所示:

<data item_id_type="1" cfgid="{4F5BBD5E-72ED-4201-B741-F6C8CC89D8EB}" has_data_event="False">
  <item name="1">
    <field id="{EA032B25-19F1-4C1B-BDDE-3113542D13A5}" type="2">0.506543009706267</field>
    <field id="{71014ACB-571B-4C72-9C9B-05458B11335F}" type="2">-0.79500402346138</field>
    <field id="{740C36E9-1988-413E-A1D5-B3E5B4405B45}" type="2">0.0152649050024924</field>
  </item>
  <item name="2">
    <field id="{EA032B25-19F1-4C1B-BDDE-3113542D13A5}" type="2">0.366096802804087</field>
    <field id="{71014ACB-571B-4C72-9C9B-05458B11335F}" type="2">-0.386642801354842</field>
    <field id="{740C36E9-1988-413E-A1D5-B3E5B4405B45}" type="2">0.031671174184115</field>
  </item>
</data>
Run Code Online (Sandbox Code Playgroud)

.

我想要的是

我需要将其转换为常规表类型数据集,如下所示:

item_name field_id                             field_type  field_value
--------- ------------------------------------ ----------- ---------------
1         EA032B25-19F1-4C1B-BDDE-3113542D13A5 2           0.5065430097062
1         71014ACB-571B-4C72-9C9B-05458B11335F 2           -0.795004023461
1         740C36E9-1988-413E-A1D5-B3E5B4405B45 2           0.0152649050024
2         EA032B25-19F1-4C1B-BDDE-3113542D13A5 2           0.3660968028040
2         71014ACB-571B-4C72-9C9B-05458B11335F 2           -0.386642801354
2         740C36E9-1988-413E-A1D5-B3E5B4405B45 2           0.0316711741841
3         EA032B25-19F1-4C1B-BDDE-3113542D13A5 2           0.8839620369590
3         71014ACB-571B-4C72-9C9B-05458B11335F 2           -0.781459993268
3         740C36E9-1988-413E-A1D5-B3E5B4405B45 2           0.2284423515729 …
Run Code Online (Sandbox Code Playgroud)

sql-server performance sqlxml sql-server-2008-r2 cross-apply

11
推荐指数
1
解决办法
9960
查看次数

关联IComMethodEvents

实现IComMethodEvents时,您将获得三个事件.

  1. OnMethodCall
  2. OnMethodException
  3. OnMethodReturn

我想要做的目标是记录COM +组件中每个方法的调用时间.

可以通过使用lTimelMicroTimeCOMSVCSEVENTINFO结构中检索事件的时间,因此通过在两者中记录该时间OnMethodCall,OnMethodReturn我应该能够计算调用时间但是我如何确定这两个事件是相关的.

通过测试它看起来我应该能够使用实时(JIT)激活对象oid.

这样做有什么问题或有其他方法吗?

可能存在的一个问题是我看到oid它经常被重用,所以如果由于某种原因导致的事件不按顺序触发,则实现相关可能会有点困难.

更新1:

进一步的测试表明,oid在多用户场景中还不够.同时使用相同的对象,因此必须至少使用oid和完成相关original caller.后续问题将是:如何从COM +事件订阅者获取原始调用者?

更新2:

刚刚找到IComMethod2Events.区别在于事件具有执行调用的线程的标识符.在测试中看起来很有前途,我无法想象相关性可能会失败的情况.COM +组件的线程模型是Any Apartment.

更新3

在本文中,使用创建COM + PerfMon计数器来监视COM +数据 oid.我不认为这在多线程公寓中已经足够了.

注意:我最终会在Delphi中实现它,所以我添加了Delphi标记.我还添加了C#标签,因为用于实现接口的语言可能根本不重要.更新:暂时添加c ++标签只是为了引起之前实际使用过这些内容的人的注意.

c# c++ delphi monitoring com+

10
推荐指数
1
解决办法
395
查看次数