标签: t-sql

T-SQL 中列中的 GETDATE( )

有没有办法创建一个表,其中的DATE列在每个日期都更新为当前日期?

我想要一个列,每次我select给我当前日期。

GETDATE() 函数给出当前日期,但我没有设法使用它来每天获取当前日期。

主要目标是创建一个表,但我认为使用视图可能会更好。

sql-server t-sql

-1
推荐指数
1
解决办法
460
查看次数

请问我能否获得有关使用 T-SQL 循环遍历 SQL 服务器实例中的所有用户数据库的帮助

请任何人都可以帮助我如何循环遍历实例中的所有用户数据库,为每个数据库执行以下查询?

该脚本在单独的语句中返回具有各自权限的用户列表。

SELECT 'USE '+ DB_NAME()+'; '+CASE WHEN dp.state <> 'W' THEN dp.state_desc ELSE 'GRANT' END +' ' + 
        dp.permission_name + ' TO ' + QUOTENAME(dpg.name) COLLATE database_default + 
        CASE WHEN dp.state <> 'W' THEN '' ELSE ' WITH GRANT OPTION' END +';' AS [-- Permission To Be Assign to the User --]
FROM    sys.database_permissions AS dp
INNER JOIN sys.database_principals AS dpg ON dp.grantee_principal_id = dpg.principal_id
WHERE   dp.major_id = 0 AND dpg.principal_id > 4
        AND (dpg.type in ('S','G','U'))
        AND dpg.name …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

-1
推荐指数
1
解决办法
61
查看次数

聚集索引和排序

select *
from [table_a];
Run Code Online (Sandbox Code Playgroud)

聚集索引根据您选择的列对表进行排序。

话虽这么说,如果我有一个聚集索引[column_a], [column_b],[column_c]从上面运行相同的查询,那么数据是否总是根据该顺序返回排序,因为这是创建聚集索引的顺序?

更多说明:

如果我ORDER BY在索引中没有的内容上添加一个子句,执行计划将有一个排序运算符。

如果我对ORDER BY聚集索引中使用的所有列都有一个子句,则执行计划将不会有排序运算符。

这就是我首先问这个问题的原因。

index sql-server clustered-index t-sql

-1
推荐指数
1
解决办法
670
查看次数

如果 RAISERROR 与已弃用的一样好,那么您应该如何刷新 PRINT 缓冲区?

RAISERROR与已弃用一样好。文档

新的应用程序应该使用THROW而不是RAISERROR.

然而,它通常用于刷新打印缓冲区

假设我正在编写一个很长的存储过程,并且我想要定期报告它所处的步骤。如果RAISERROR这是不可能的,我应该如何PRINT摆脱它?

假设 SQL Server 版本相对较新。就说2019年吧。

sql-server t-sql raiserror

-1
推荐指数
1
解决办法
132
查看次数

营业日期和路线顺序

+-------------------------------------------------------------------+
|Route |Sequence|        Planned Time       |     Business Date     |
+-------------------------------------------------------------------+
| 10-1 |   1    |  2015-08-21 20:15:00.000  |      2015-08-21       |
| 10-1 |   2    |  2015-08-22 00:30:00.000  |      2015-08-21       |
| 10-1 |   3    |  2015-08-22 08:45:00.000  |      2015-08-21       |
| 22-1 |   1    |  2015-08-20 17:30:00.000  |      2015-08-20       |
| 22-1 |   2    |  2015-08-21 01:10:00.000  |      2015-08-20       |
| 22-1 |   3    |  2015-08-21 06:30:00.000  |      2015-08-20       |
+------+--------+---------------------------+-----------------------+
Run Code Online (Sandbox Code Playgroud)

上图是最终目标……但我需要帮助。

装运和交付在一周中的每天进行,但是,仅记录为​​周一至周五的营业日期。周六和周日的每次交付都将记录为周五的营业日期。中午到中午的逻辑是针对路线出发时间的复杂性及其彼此唯一的顺序依赖性。路线 1A 于周一晚上 8 点出发,沿途有 15 个连续停靠点,其中一个停靠点是路线 1B …

sql-server t-sql

-2
推荐指数
1
解决办法
58
查看次数

如何使用 CASE 语句返回多于 1 个值

我需要用CASE生成WHERE IN ()语句,我试试这个:

SELECT * FROM table 
WHERE tbl_column IN ( CASE
                      WHEN @val = 1 THEN (SELECT * FROM (VALUES (2), (22)) AS X(a)
                      WHEN @val = 5 THEN (SELECT * FROM (VALUES (13), (18), (44)) AS X(a)
                      WHEN @val = 7 THEN (SELECT * FROM (VALUES (7)) AS X(a)
                      END
                    )
Run Code Online (Sandbox Code Playgroud)

但我收到错误:子查询返回了 1 个以上的值。

我应该怎么做?

t-sql

-2
推荐指数
1
解决办法
2976
查看次数

如何忽略 CTE Select 语句中的重复行?

我试图忽略来自 CTE 的重复行,但我无法做到这一点,似乎 CTE 不允许使用ROWNUM()变量到WHERE子句,因为它在尝试这样做时显示“无效的列名 'numrows' ”错误.

SELECT在 a 中使用时如何忽略重复的行CTE

SQL查询:

DECLARE @BatchID uniqueidentifier = NEWID();
DECLARE @ClusterID SMALLINT = 1;
DECLARE @BatchSize integer = 20000;
DECLARE @myTableVariable TABLE(
    EventID BIGINT,
    HotelID int,
    BatchStatus varchar(50),
    BatchID uniqueidentifier);

WITH PendingExtResSvcEventsData_Batch AS (
    SELECT TOP (@BatchSize) t.EventID, t.HotelID, t.BatchStatus, t.BatchID,
        ROW_NUMBER() OVER (PARTITION BY t.EventID ORDER BY t.EventID) numrows 
    FROM ExtResSvcPendingMsg t WITH (NOLOCK)
    WHERE t.ClusterID = @ClusterID
      AND numrows = 1
      -- Exclude …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

-2
推荐指数
1
解决办法
1264
查看次数

什么是大于/小于 TSQL 的倍数?

我在www.codemag.com/article/1208111 上阅读了一篇文章,并在 WHERE 子句中看到了将列与

Column1 <<<>> Column2
Run Code Online (Sandbox Code Playgroud)

Column1 <<<= Column2
Run Code Online (Sandbox Code Playgroud)

在清单 13 和清单 14 中的文章

那些是什么意思?

sql-server t-sql

-2
推荐指数
1
解决办法
118
查看次数

来自 sp_OAMethod 的大量 PREEMPTIVE_OS_GETPROCADDRESS 等待。如何调试?

一些查询对我的 CPU 的影响非常严重。sp_WhoIsActive报告这sp_OAMethod就是原因(该sql_text列指向它)并且它具有PREEMPTIVE_OS_GETPROCADDRESS等待类型的巨大等待。鉴于这sp_OAMethod是一个内置存储过程,我该如何调试它?

我使用的是 2019 版本的 SQL Server,15.0.something。

sql-server t-sql waits ole-automation cpu

-2
推荐指数
1
解决办法
154
查看次数

在 WHERE 子句的 CASE 表达式中使用 IS NULL

我有一个WHERE要在其中使用CASE表达式的子句。但是,我的CASE表达式需要检查字段是否为IS NULL.

如果@UserRole变量值 = 'Analyst',则SupervisorApprovedBy列值必须为NULL. 否则,我是说返回所有数据,即SupervisorApprovedBy = SupervisorApprovedBy.

我需要更改以下内容吗?

WHERE SupervisorApprovedBy = 
CASE 
    WHEN @UserRole = 'Analyst' THEN NULL
    ELSE SupervisorApprovedBy
END
Run Code Online (Sandbox Code Playgroud)

我不能使用=for NULL。经测试无效。

我希望返回所有行,包括那些 where SupervisorApprovedBy IS NOT NULL

null sql-server t-sql case

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

标签 统计

t-sql ×10

sql-server ×9

case ×1

clustered-index ×1

cpu ×1

index ×1

null ×1

ole-automation ×1

raiserror ×1

waits ×1