我有一列整数表示信号的发生,我正在尝试添加一列显示连续行的计数
如果我的数据看起来像这样
724
727
728
733
735
737
743
747
749
Run Code Online (Sandbox Code Playgroud)
具有连续行计数列的结果数据将如下所示
724 1
727 1
728 2
729 3
735 1
737 1
743 1
744 2
748 1
Run Code Online (Sandbox Code Playgroud)
我已经使用循环函数完成了它,但我正在尝试使用 cte。这是我最近尝试的示例
DECLARE @d TABLE ( signal INT )
INSERT INTO @d
SELECT 724
UNION
SELECT 727
UNION
SELECT 728
UNION
SELECT 729
UNION
SELECT 735
UNION
SELECT 737
UNION
SELECT 743
UNION
SELECT 744
UNION
SELECT 748 ;
WITH a AS ( SELECT signal,
ROW_NUMBER() OVER ( ORDER BY …Run Code Online (Sandbox Code Playgroud) 我有这个 tSQL 代码可以正常工作:
SELECT
c.logguid,
a.b.value('./PropertyValue', 'varchar(max)') asd
FROM [dnn].[dbo].[EventLog2] c
cross apply sss.nodes('/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y")]') as a(b)
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够做的是传入许多对值的动态列表,这些值对在每个值之间进行 OR 运算,即
SELECT
c.logguid,
a.b.value('./PropertyValue', 'varchar(max)') asd
FROM [dnn].[dbo].[EventLog2] c
cross apply sss.nodes(
'/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y")
or
PropertyName=sql:variable("@a") and PropertyValue=sql:variable("@b")
]'
) as a(b)
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
我只想获取具有值NULL和其他值而不是NULL特定用户名列的行。
如果该特定用户名的两行都为 null,或者两者都有一些非 null 的值,则它不应出现在输出中。如果同一个用户名有两行以上的空值和一些其他值,那么它们应该出现。
下面是示例示例和输出。如何使用 sql 查询来完成?
+----------+-------+
| username | col2 |
+----------+-------+
| a | abc |
| a | ef |
| b | null |
| b | null |
| c | der |
| c | null |
+----------+-------+
Run Code Online (Sandbox Code Playgroud)
输出
+----------+------+
| username | col2 |
+----------+------+
| c | der |
| c | null |
+----------+------+
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
DECLARE @MyTable AS TABLE
(
[Month] INT,
Salary INT
);
INSERT INTO @MyTable VALUES (1,2000), (1,3100);
SELECT [Month], Salary FROM @MyTable;
Run Code Online (Sandbox Code Playgroud)
输出:

我想NVARCHAR合并工资(按月分组),这样它就会是这样的:'2000,3100'
我将如何有效地做到这一点?
我有一个“新”的数据库角色/登录mynewdb与角色"emailsender"。我已经编写了一个配置文件,sp_send_dbmail现在正在尝试编写将登录名添加到DatabaseMailUserRolein 的脚本,msdb并且似乎在绕圈子。重要的是,我想在mynewdb. 我知道我可以SSMS用来做到这一点。问题是:
如何编写脚本将用户T-SQL从mynewdb数据库添加到角色中而不切换到msdb?
我有一台刚刚重新启动的服务器,并使用以下命令验证了哪些跟踪标志处于活动状态DBCC TRACESTATUS:
跟踪标志:3688 功能:将有关跟踪开始和停止的消息删除到错误日志
在这里您可以看到每个跟踪标志的作用。
启动参数如下:
题:
如何通过 T-SQL 找到 SQL Server 服务的启动参数?
在存储过程中,我有以下内容:( sql server 2008 )
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRANSACTION getStuff
BEGIN TRY
/* some selects, updates, etc, etc. */
....
COMMIT TRANSACTION getStuff
END TRY
BEGIN CATCH
...
END CATCH
Run Code Online (Sandbox Code Playgroud)
由于这是基于事务的,我认为其余的数据库连接不会受到 SERIALIZABLE 的影响。
我是否需要隐式设置隔离级别以在提交后读取已提交?这是否会对我的应用程序服务器和数据库服务器之间的其他连接产生不利影响?
背景:
我们正在尝试为我们的一个支持团队创建一个 AG“是主要的”测试工具。不知道在任何给定时间哪些服务器将是主服务器,它们被指示对注册的服务器组执行 TSQL。注册服务器组由AG中的所有服务器组成。目标是只在当前主服务器上执行 TSQL:
当前测试线束:
IF EXISTS (SELECT *
FROM sys.dm_hadr_availability_replica_states AS HARS
INNER JOIN sys.dm_hadr_availability_replica_cluster_states AS HACS ON HACS.replica_id = HARS.replica_id
WHERE (HARS.role_desc = 'PRIMARY') AND (HACS.replica_server_name LIKE @@SERVERNAME))
BEGIN
<<SOME CODE TO EXECUTE>>
END
Run Code Online (Sandbox Code Playgroud)
问题:
如果响应多服务器查询的第一台服务器没有返回任何结果,SSMS 将假定正确的结果集没有结果集,即使其他服务器稍后返回结果集也是如此。因此,在这种情况下,不会返回任何结果……这是不正确的,也不是预期的功能。
谁能想出一种方法,使用 SSMS(这是 CS 团队最熟悉的工具),仅在当前主服务器上强制执行?
如何将我的TempDB 数据或日志文件从现在的任何位置移动到不同的驱动器或文件夹?
将表格“展平”成单行的最佳方法是什么?
例如,使用下表:
+-----+-------+-------------+------------------+
| Id | hProp | iDayOfMonth | dblTargetPercent |
+-----+-------+-------------+------------------+
| 117 | 10 | 5 | 0.1400 |
| 118 | 10 | 10 | 0.0500 |
| 119 | 10 | 15 | 0.0100 |
| 120 | 10 | 20 | 0.0100 |
+-----+-------+-------------+------------------+
Run Code Online (Sandbox Code Playgroud)
我想生成下表:
+-------+--------------+-------------------+--------------+-------------------+--------------+-------------------+--------------+-------------------+
| hProp | iDateTarget1 | dblPercentTarget1 | iDateTarget2 | dblPercentTarget2 | iDateTarget3 | dblPercentTarget3 | iDateTarget4 | dblPercentTarget4 |
+-------+--------------+-------------------+--------------+-------------------+--------------+-------------------+--------------+-------------------+
| 10 | 5 | 0.14 | 10 …Run Code Online (Sandbox Code Playgroud)