标签: sql-server-2008-r2

带row_number()的SQL更新

我想用增量号更新我的列CODE_DEST.我有:

CODE_DEST   RS_NOM
null        qsdf
null        sdfqsdfqsdf
null        qsdfqsdf
Run Code Online (Sandbox Code Playgroud)

我想将其更新为:

CODE_DEST   RS_NOM
1           qsdf
2           sdfqsdfqsdf
3           qsdfqsdf
Run Code Online (Sandbox Code Playgroud)

我试过这段代码:

UPDATE DESTINATAIRE_TEMP
SET CODE_DEST = TheId 
FROM (SELECT  Row_Number()   OVER (ORDER BY [RS_NOM]) AS TheId FROM DESTINATAIRE_TEMP)
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为 )

我也尝试过:

WITH DESTINATAIRE_TEMP AS
  (
    SELECT 
    ROW_NUMBER() OVER (ORDER BY [RS_NOM] DESC) AS RN
    FROM DESTINATAIRE_TEMP
  )
UPDATE DESTINATAIRE_TEMP SET CODE_DEST=RN
Run Code Online (Sandbox Code Playgroud)

但由于结合,这也行不通.

如何使用ROW_NUMBER()SQL Server 2008 R2中的函数更新列?

sql-server sql-server-2008-r2 sql-update

96
推荐指数
6
解决办法
15万
查看次数

SQL Server - 创建数据库表的副本并将其放在同一个数据库中?

我在数据库DB中有一个表ABC.我想在同一个DB中创建名为ABC_1,ABC_2,ABC_3的ABC副本.如何使用Management Studio(最好)或SQL查询来做到这一点?

这适用于SQL Server 2008 R2.

sql t-sql sql-server-2008 sql-server-2008-r2

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

搜索表名

我使用以下内容在我的存储过程中搜索字符串:

use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
Run Code Online (Sandbox Code Playgroud)

是否可以轻松修改上述内容,以便在特定的数据库"DBname"中搜索表名?

sql sql-server sql-server-2008-r2

85
推荐指数
6
解决办法
25万
查看次数

计算两点之间的距离(纬度,经度)

我试图计算地图上两个位置之间的距离.我存储了我的数据:经度,纬度,X POS,Y POS.

我以前使用过下面的代码片段.

DECLARE @orig_lat DECIMAL
DECLARE @orig_lng DECIMAL
SET @orig_lat=53.381538 set @orig_lng=-1.463526
SELECT *,
    3956 * 2 * ASIN(
          SQRT( POWER(SIN((@orig_lat - abs(dest.Latitude)) * pi()/180 / 2), 2) 
              + COS(@orig_lng * pi()/180 ) * COS(abs(dest.Latitude) * pi()/180)  
              * POWER(SIN((@orig_lng - dest.Longitude) * pi()/180 / 2), 2) )) 
          AS distance
--INTO #includeDistances
FROM #orig dest
Run Code Online (Sandbox Code Playgroud)

不过我不相信这个数据,它似乎给出了稍微不准确的结果.

一些示例数据,以备您需要时使用

Latitude        Longitude     Distance 
53.429108       -2.500953     85.2981833133896
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决我的代码,我不介意你是否想要修复我已经拥有的东西,如果你有一种新方法可以实现这一点,那就太棒了.

请说明您的结果所在的计量单位.

sql t-sql sql-server math sql-server-2008-r2

82
推荐指数
5
解决办法
16万
查看次数

如何从SQL Server中的表中查询Xml值和属性?

我有一个包含Xml列的表:

SELECT * 
FROM Sqm
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

xml一行数据的样本将是:

<Sqm version="1.2">
  <Metrics>
    <Metric id="TransactionCleanupThread.RecordUsedTransactionShift" type="timer" unit="µs" count="1" sum="21490"   average="21490"   minValue="73701"    maxValue="73701"                               >73701</Metric>
    <Metric id="TransactionCleanupThread.RefundOldTrans"             type="timer" unit="µs" count="1" sum="184487"  average="184487"  minValue="632704"   maxValue="632704"                              >632704</Metric>
    <Metric id="Database.CreateConnection_SaveContextUserGUID"       type="timer" unit="µs" count="2" sum="7562"    average="3781"    minValue="12928"    maxValue="13006"    standardDeviation="16"     >12967</Metric>
    <Metric id="Global.CurrentUser"                                  type="timer" unit="µs" count="6" sum="4022464" average="670411"  minValue="15"       maxValue="13794345" standardDeviation="1642047">2299194</Metric>
    <Metric id="Global.CurrentUser_FetchIdentityFromDatabase"        type="timer" unit="µs" count="1" sum="4010057" average="4010057" minValue="13752614" maxValue="13752614"                            >13752614</Metric>
  </Metrics>
</Sqm>
Run Code Online (Sandbox Code Playgroud)

对于这些数据,我希望:

SqmId  id                                                   type   unit  count  sum      minValue  maxValue  standardDeviation  Value
=====  ===================================================  =====  ==== …
Run Code Online (Sandbox Code Playgroud)

xml sql-server sql-server-2005 sqlxml sql-server-2008-r2

76
推荐指数
4
解决办法
21万
查看次数

如何解决SQL Server错误1222即解锁SQL Server表

我在数据库中工作,我通过数据加载器在原始表中加载数据.但今天数据加载器因未知原因而陷入困境.然后我从Windows任务管理器停止了数据加载器.但后来我再次尝试在原始表中加载数据,但发现它已锁定,我无法对其进行任何操作.我尝试重新启动SQL Server服务,但它没有解决.我没有权限杀死此服务器上的进程.

下面是SQL Server显示的消息.

执行Transact-SQL语句或批处理时发生异常.(Microsoft.SqlServer.ConnectionInfo)

课程地点:

在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(字符串的SqlCommand,ExecutionTypes executionType)
在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands,ExecutionTypes executionType)
在Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery (StringCollection查询)
在Microsoft.SqlServer.Management.Smo.SqlSmoObject.ExecuteNonQuery(StringCollection查询,布尔includeDbContext)
在Microsoft.SqlServer.Management.Smo.NamedSmoObject.RenameImplWorker(字符串newName)将
在Microsoft.SqlServer.Management.Smo.NamedSmoObject. RenameImpl(String newName)

===================================

超出锁定请求超时时间.参数@objname是不明确的,或者声明的@objtype(OBJECT)是错误的.(.Net SqlClient数据提供程序)


服务器名称:162.44.25.59错误号码:1222
严重性:16状态:56
过程:sp_rename行号:282

我的SQL Server版本是2008 R2.

database sql-server deadlock locking sql-server-2008-r2

69
推荐指数
2
解决办法
21万
查看次数

分区函数COUNT()可以使用DISTINCT

我正在尝试编写以下内容,以便获得不同的NumUsers,如下所示:

NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Run Code Online (Sandbox Code Playgroud)

管理工作室对此并不感到高兴.当我删除DISTINCT关键字时,错误消失,但它不会是一个独特的计数.

DISTINCT在分区函数中似乎不可能.我如何寻找独特的计数?我是否使用更传统的方法,例如相关子查询?

进一步研究一下,也许这些OVER函数与Oracle的工作方式不同,它们不能用于SQL-Server计算运行总计.

我在SQLfiddle上添加了一个实例,我尝试使用分区函数来计算运行总计.

sql t-sql sql-server sql-server-2008-r2 sql-server-2014

69
推荐指数
4
解决办法
12万
查看次数

如何查找SQL Server实例的数据目录?

我们有一些大型数据库(20GB +),其中大部分都包含静态查找数据.因为我们的应用程序对这些数据库中的表执行连接,所以它们必须是每个开发人员本地SQL Server的一部分(即它们不能托管在中央的共享数据库服务器上).

我们计划复制一组规范的实际SQL Server数据库文件(*.mdf和*.ldf)并将它们附加到每个开发人员的本地数据库.

找出本地SQL Server实例的数据目录的最佳方法是什么,以便我们可以将文件复制到正确的位置?这将通过自动化过程完成,因此我必须能够从构建脚本中查找和使用它.

sql sql-server sql-server-2005 sql-server-2008 sql-server-2008-r2

68
推荐指数
7
解决办法
12万
查看次数

单个SQL Server语句是原子的还是一致的?

是SQL Server中的声明ACID吗?

我是什么意思

给定一个未包装在BEGIN TRANSACTION/ COMMIT TRANSACTION中的T-SQL语句是该语句的操作:

  • 原子:要么执行所有数据修改,要么不执行任何数据修改.
  • 一致:完成后,事务必须使所有数据保持一致状态.
  • 隔离:并发事务所做的修改必须与任何其他并发事务所做的修改隔离.
  • 持久:交易完成后,其效果将永久存在于系统中.

我问的原因

我在实时系统中有一个声明似乎违反了查询规则.

实际上我的T-SQL语句是:

--If there are any slots available, 
--then find the earliest unbooked transaction and mark it booked
UPDATE Transactions
SET Booked = 1
WHERE TransactionID = (
   SELECT TOP 1 TransactionID
   FROM Slots
      INNER JOIN Transactions t2
      ON Slots.SlotDate = t2.TransactionDate
   WHERE t2.Booked = 0 --only book it if it's currently unbooked
   AND Slots.Available > 0 --only book …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2

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

带有标识列的导入和导出向导

我想将数据从一个数据库移动到另一个数据库,同时将标识列值保留在旧数据库中.当我运行向导时,我收到验证错误"无法插入只读列"ChannelID".

其中ChannelID是该表上的标识列.如何覆盖身份功能以便能够导入数据?

sql-server sql-server-2008 sql-server-2008-r2

62
推荐指数
4
解决办法
6万
查看次数