我有一个包含三列的表,基本的SELECT语句如下所示:
SELECT TOP 1000 [PatchHistoryId]
,CASE
WHEN [PatchName] LIKE N'1_%' THEN '1_aaa'
WHEN [PatchName] LIKE N'2_%' THEN '2_bbb'
WHEN [PatchName] LIKE N'3_%' THEN '3_ccc'
WHEN [PatchName] LIKE N'4_%' THEN '4_ddd'
WHEN [PatchName] LIKE N'5_%' THEN '5_eee'
WHEN [PatchName] LIKE N'6_%' THEN '6_fff'
WHEN [PatchName] LIKE N'7_%' THEN '7_ggg'
WHEN [PatchName] LIKE N'8_%' THEN '8_hhh' END AS PatchName
,[CreatedDate]
FROM [PatchHistory]
Run Code Online (Sandbox Code Playgroud)
结果如下所示:
PatchHistoryId | PatchName | CreatedDate
-------------------------------------------
1 1_aaa 2013-07-19 12:50:14.637
2 2_bbb 2013-07-19 12:50:16.570
1002 3_ccc 2013-07-26 08:53:33.557
1003 …
Run Code Online (Sandbox Code Playgroud) 可能是一个奇怪的标题,但我会试着表达我的困境.
非聚集索引与三列(即.FirstName
,LastName
和BirthDate
)之间的真正区别是什么,并覆盖索引,其中我们有两个索引列(FirstName
和LastName
)和一个包含列BirthDate
?
使用一种类型比其他类型有任何性能提升吗?当我们更新BirthDate
列中的值时,两种索引类型中发生了什么?
使用干净的非群集覆盖索引获得/失去的是什么,而在两个索引中,我们在索引中都有三个值,而不需要从页面文件中获取额外的任务来获取数据.
索引结构有什么区别吗?
也许问题太宽泛,但问题很简单.
要正确使用索引,必须将过滤谓词设置为搜索参数,因此DATETIME
在这种情况下不能使用函数.
您需要使用<=
和>=
操作数进行日期和时间比较,但也有BETWEEN
条款.
所以,建议是使用简单的算术操作数,因为BETWEEN
结束日期有问题.
有没有BETWEEN
更好的背景<=
和>=
?
如何从一个数据库中删除所有索引,无论是聚簇还是非聚簇?
我需要使用脚本,而不是GUI.
EDITED
数据库有7个表,其中一些是查找,一些是与外键相关的.每个表都有一个最小的索引,在创建主键时及时创建,因此自动创建了约束.当通过GUI删除这些索引时,我收到一个错误,即由于依赖于其他键而无法删除索引.
因此,我需要首先删除作为外键的索引键,然后删除在主键上创建的索引.
I need to merge two tables in sqlite based on a common column. The problem is both the tables belong to different databases. So, what would be an efficient way to merge the tables here?
A sample table would be like this with the desired result. But the problem is these two tables are in different databases.
Table 1: Employee_Pro_Profile
Columns: Emp_Id, Emp_Name, Emp_Sal
Table 2: Employee_Personal_Profile
Columns: Emp_Id, Emp_Home_Address, Emp_Phone
Resulting Table: Employee_Complete
Columns: Emp_Id, Emp_Name, Emp_Sal, Emp_Home_Address, Emp_Phone
Run Code Online (Sandbox Code Playgroud) 我试过以下查询:
SELECT
MAX(SUM(e.Empid))
FROM HR.Employees
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么不允许这样做?
我只需要显示我的sep_dt日期为null或者是否在过去七天内的数据.我该怎么做?
SELECT
IIF(SEP_DT >= DATEADD(DAY, -7, GETDATE()) OR SEP_DT = NULL, 1, 0) AS TERMDATE,
*
FROM MYTable
Run Code Online (Sandbox Code Playgroud)
这不起作用,我不想要额外的TERMDATE
列.我只需要剩下的数据