有没有办法创建一个表,其中的DATE列在每个日期都更新为当前日期?
我想要一个列,每次我select给我当前日期。
GETDATE() 函数给出当前日期,但我没有设法使用它来每天获取当前日期。
主要目标是创建一个表,但我认为使用视图可能会更好。
请任何人都可以帮助我如何循环遍历实例中的所有用户数据库,为每个数据库执行以下查询?
该脚本在单独的语句中返回具有各自权限的用户列表。
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) select *
from [table_a];
Run Code Online (Sandbox Code Playgroud)
聚集索引根据您选择的列对表进行排序。
话虽这么说,如果我有一个聚集索引[column_a], [column_b],并[column_c]从上面运行相同的查询,那么数据是否总是根据该顺序返回排序,因为这是创建聚集索引的顺序?
更多说明:
如果我ORDER BY在索引中没有的内容上添加一个子句,执行计划将有一个排序运算符。
如果我对ORDER BY聚集索引中使用的所有列都有一个子句,则执行计划将不会有排序运算符。
这就是我首先问这个问题的原因。
+-------------------------------------------------------------------+
|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 …
我需要用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 个以上的值。
我应该怎么做?
我试图忽略来自 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) 我在www.codemag.com/article/1208111 上阅读了一篇文章,并在 WHERE 子句中看到了将列与
Column1 <<<>> Column2
Run Code Online (Sandbox Code Playgroud)
和
Column1 <<<= Column2
Run Code Online (Sandbox Code Playgroud)
在清单 13 和清单 14 中的文章
那些是什么意思?
一些查询对我的 CPU 的影响非常严重。sp_WhoIsActive报告这sp_OAMethod就是原因(该sql_text列指向它)并且它具有PREEMPTIVE_OS_GETPROCADDRESS等待类型的巨大等待。鉴于这sp_OAMethod是一个内置存储过程,我该如何调试它?
我使用的是 2019 版本的 SQL Server,15.0.something。
我有一个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。