有没有办法可以把下面的SELECT语句变成一个DELETE?
I would like to delete the corresponding returned records from the [ETL].[Stage_Claims] table.
Since I used derived tables I can't reference the Stage_Claims table.
To summarize, the 2 physical tables used in the below query have identical structures. Only difference is DUPS_Claims is a subset of Stage_Claims.
DUPS_Claims contains duplicate records found in Stage_Claims. If a record exists 3 times in Stage_Claims, we will have that record 3 times in DUPS_Claims as …
我有一个包含通话记录的表:
tbl_calls
cl_Id
cl_StartDate
cl_endDate
Run Code Online (Sandbox Code Playgroud)
我传递两个参数@StartDate并@EndDate给我的存储过程。
我的要求是在每 15 分钟的持续时间内获取通话记录的数量。
例如,如果:
@StartDate = '2015-11-16 00:00:00.000',
@EndDate = '2015-11-16 23:59:00.000'
Run Code Online (Sandbox Code Playgroud)
输出应该是:
Date Count
2015-11-16 00:00:00.000 10(Count of startDate between '2015-11-16 00:00:00.000' AND '2015-11-16 00:15:00.000')
2015-11-16 00:15:00.000 7(Count of startDate between '2015-11-16 00:15:00.000' AND '2015-11-16 00:30:00.000')
2015-11-16 00:30:00.000 50(Count of startDate between '2015-11-16 00:30:00.000' AND '2015-11-16 00:45:00.000')
upto @EndDate
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下查询,但它不能正常工作。有一个更好的方法吗?
DECLARE @StartDate DATETIME = DATEADD(DAY,-1,GETUTCDATE()),
@EndDate DATETIME = GETUTCDATE()
SELECT New
FROM
(SELECT
(CASE
WHEN cl_StartTime BETWEEN @StartDate AND …Run Code Online (Sandbox Code Playgroud) 我有一个名为 CDR 的大表(400 万条记录),用于在 VoIP 系统中存储来自 Cisco 路由器的 CDR(呼叫详细记录),该表不断增长,并且永远不会有无序插入的记录。我们也不更新或删除行。
由于我们的大多数查询都基于发起呼叫的时间,因此我在此列(DATETIME数据类型)上创建了我的主要聚集索引。然而,在短暂的时间后,索引变得碎片化,仅仅一周后,它的碎片化程度就超过了 70%,因此我们需要重建它。我不明白为什么会发生这种情况,因为我们按顺序插入,并且不更新或删除行。
任何减少或消除碎片的建议将不胜感激。
我在装有 Windows Server 2012 的旧 Xenon 服务器上使用 SQL Server 2014 Enterprise 版本。
sql-server clustered-index fragmentation datetime sql-server-2014
创建新表时,示例有时会显示用CONSTRAINT关键字定义的主键和外键,有时则不显示CONSTRAINT关键字。是使用CONSTRAINT关键字为约束命名的唯一原因吗?或者您是否有其他原因选择使用或不使用此关键字?
示例 1(不带关键字):
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);
Run Code Online (Sandbox Code Playgroud)
示例 2(使用关键字):
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID)
);
Run Code Online (Sandbox Code Playgroud)
除了分配指定的约束名称之外,DBMS 对这两个示例的看法是否不同?我特别在考虑 SQL Server、Oracle、MySQL 和 PostgreSQL。
当我从 SQL Server 中的表中删除行时,数据库文件的大小不会变小。这是为什么?即使我从每个表中删除每一行,文件大小仍然与删除前一样大。
我有兴趣了解原因,而不是如何缩小数据库文件。
假设我在 SQL Server 2008 中有一个这样的表:
id | name | qty
-------------------
1 | john | 1
2 | bill | 3
3 | mary | 2
4 | jill | 5
Run Code Online (Sandbox Code Playgroud)
我想查询此表并为每批返回 1 行,最多为 2。因此,查询结果如下所示:
id | name | qty
-------------------
1 | john | 1
2 | bill | 2
2 | bill | 1
3 | mary | 2
4 | jill | 2
4 | jill | 2
4 | jill | 1
Run Code Online (Sandbox Code Playgroud)
这可以在不使用光标的情况下整齐地完成吗?这可以使用 unpivot 吗?
顺便说一下,该 …
为了加密 SQL 数据库,我运行以下命令:
CREATE CERTIFICATE <certname> ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'
WITH SUBJECT = 'certificate subject', EXPIRY_DATE = '20291031';
go
USE <databasetoencrypt>;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE <certname>;
GO
Run Code Online (Sandbox Code Playgroud)
尝试执行CREATE DATABASE ENCRYPTION KEY命令时,我收到此消息,但不知道该怎么做:
无法使用证书“名称”,因为其私钥不存在或不受数据库主密钥的保护。SQL Server 需要能够自动访问用于此操作的证书的私钥。
当我ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'在CREATE CERTIFICATE命令中省略期间时,它会起作用。但是,我需要创建一个受密码保护的证书。
你有什么主意吗?!谢谢你。
我创建了一个包含 100 多万行的分区表,并datetime在创建表时不小心将错误的列指定为分区键。
是否有一种简单的方法可以将分区列从一datetime列更改为另一列。就我而言,我们有一个列InsertedDate和一个CompleteDate,我不小心使用了第一个而不是第二个。
我正在尝试从本地 postgres 数据库双表中选择 now():
select now() from dual;
Run Code Online (Sandbox Code Playgroud)
它不返回任何行。只打印列名now(yyyy-MM-dd HH:mm:ss.ffffff)
我错过了什么无法获得系统时间?
我有一个articles名为price.
当我的 Web 应用程序上的用户同时选择Price Min和 时Price Max,我需要执行如下查询:
$priceMin = 100000;
$priceMax = 10000000;
$query = 'SELECT * FROM articles WHERE price BETWEEN $priceMin AND $priceMax';
Run Code Online (Sandbox Code Playgroud)
然而,当所选择的Price Min is <= 100000和Price Max is >= 10000000(10元),我没有与任何输出Price大于900000即使以上值的行900000确实存在。
该表定义如下:
CREATE TABLE articles (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
price varchar(100) NOT NULL,
source varchar(255) NOT NULL, PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=5 …Run Code Online (Sandbox Code Playgroud) sql-server ×6
constraint ×1
count ×1
cross-apply ×1
cursors ×1
date ×1
datetime ×1
mysql ×1
mysql-5.6 ×1
partitioning ×1
postgresql ×1
select ×1
timestamp ×1
transparent-data-encryption ×1
unpivot ×1