我有一个大数据表.该表中有1000万条记录.
这个查询的最佳方法是什么?
Delete LargeTable where readTime < dateadd(MONTH,-7,GETDATE())
Run Code Online (Sandbox Code Playgroud) 数据将是这样的:
id | data
----|---------
1 | AABBCC
2 | FFDD
3 | TTHHJJKKLL
Run Code Online (Sandbox Code Playgroud)
我想要的结果是什么
id | data
----|---------
1 | AA
1 | BB
1 | CC
2 | FF
2 | DD
3 | TT
3 | HH
3 | JJ
3 | KK
3 | LL
Run Code Online (Sandbox Code Playgroud)
我有一个使用游标的SQL代码
DECLARE @table2 table ( id INTEGER, data VARCHAR(500))
DECLARE Cur CURSOR FOR
SELECT id FROM table1
OPEN Cur
WHILE ( @@FETCH_STATUS = 0 )
BEGIN
DECLARE @LoopNum INTEGER
DECLARE @tempID …
Run Code Online (Sandbox Code Playgroud) 我在表上有一个主键(比如ContactID).SQL Server自动在此列上创建和维护聚簇INDEX.当我运行Tuning Advisor时(针对性能跟踪),它似乎建议在同一列上使用另一个INDEX - contactID列上的NON CLUSTERED索引.这将如何帮助 - 因为列上已经有聚簇索引?
如果我Temp Tables
在存储过程的定义中创建,然后dropping them when I am done
使用它们将导致重新编译执行计划?
对于存储过程每次调用它?任何个人经历?有什么解释吗?
当在每次调用结束时删除临时表时,执行计划变为无效.SQL Server是否仍然保留执行计划并在下次调用时重用,或者在每次调用时重新编译它.
sql-server stored-procedures sql-server-2008 sql-server-2008-r2
过去几周我一直遇到一个奇怪的问题.在我的两个不同的服务器上,sql server Agent自动停止工作,我所要做的就是重新启动代理并重新启动它.但是因为它停止工作,它会错过备份作业我和我在其上安排的其他几个作业Sql Agents.
任何其他服务器都不会发生这种情况,但它只发生在这两个特定的服务器上.
所有服务器都是SQL SERVER 2008 R2,数据中心版.64位.
有没有人遇到同样的问题,如果是的你做了什么来解决它?
所以我收到了这个错误:#1066 - 不唯一的表/别名:'购买'
我正在尝试执行以下操作:
SELECT Blank.BlankTypeCode
,Blank.BlankCode
,Payment.Amount
,Payment.Type
,Purchase.PurchaseDate
,Payment.DatePaid
FROM Blank
INNER JOIN Ticket
ON Blank.BlankCode = Ticket.Blank_BlankCode
INNER JOIN MCO_Blank
ON Blank.BlankCode = MCO_Blank.Blank_BlankCode
INNER JOIN Purchase
ON Ticket.PurchaseID = Purchase.PurchaseID
INNER JOIN Purchase
ON MCO_Blank.PurchaseID = Purchase.PurchaseID
INNER JOIN Payment
ON Ticket.PurchaseID = Payment.PurchaseID
INNER JOIN Payment
ON MCO_Blank.PurchaseID = Payment.PurchaseID
WHERE Payment.Status = "Paid";
Run Code Online (Sandbox Code Playgroud)
空白表包括:
BlankCode,
IssueDate,
Status,
UserID,
BlankTypeCode
Run Code Online (Sandbox Code Playgroud)
付款表包括:
Type,
Amount,
Status,
DueDate,
PurchaseID,
CurrencyRateDate
Run Code Online (Sandbox Code Playgroud)
购买表包括:
PurchaseID,
CustomerID,
PurchaseDate,
TotalFare,
TaxAmount,
CurrencyType,
Purchasecol …
Run Code Online (Sandbox Code Playgroud) 我有一张桌子,每1次调查可存储1行.
每项调查共收到约70个问题,每列提出1个问题
SurveyID Q1, Q2 Q3 .....
1 Yes Good Bad ......
Run Code Online (Sandbox Code Playgroud)
我想透镜调整,以便读取
SurveyID Question Answer
1 Q1 Yes
1 Q2 Good
1 Q3 Bad
... ... .....
Run Code Online (Sandbox Code Playgroud)
我使用{cross apply}来实现这个目标
SELECT t.[SurveyID]
, x.question
, x.Answer
FROM tbl t
CROSS APPLY
(
select 1 as QuestionNumber, 'Q1' as Question , t.Q1 As Answer union all
select 2 as QuestionNumber, 'Q2' as Question , t.Q2 As Answer union all
select 3 as QuestionNumber, 'Q3' as Question , t.Q3 As Answer) x …
Run Code Online (Sandbox Code Playgroud) 我正在研究 SQL Server 2008 的查询,该查询需要以考虑表中行的连续性质的方式进行分区,这意味着它没有“内存”,并在分区的连续性中断时重新启动行编号。
为了显示:
declare @test table
(
CustomerId varchar(10),
ItemId varchar(10),
PlatformName varchar(10),
date datetime
)
insert into @test values ('aaaa', 'x', 'mobile','2015-10-24 22:52:47')
insert into @test values ('aaaa', 'x', 'mobile','2015-10-23 22:56:47')
insert into @test values ('aaaa', 'k', 'mobile','2015-10-22 21:52:47')
insert into @test values ('aaaa', 'k', 'tablet','2015-10-20 22:12:47')
insert into @test values ('aaaa', 'x', 'mobile','2015-10-19 20:52:47')
insert into @test values ('aaaa', 'k', 'tablet','2015-10-18 12:52:47')
insert into @test values ('aaaa', 'k', 'tablet','2015-10-16 12:52:47')
SELECT
t.*,
ROW_NUMBER() OVER (PARTITION …
Run Code Online (Sandbox Code Playgroud) 我有一张桌子,每位销售人员每天销售1条记录
NAME DATE
joe 1-1-13
joe 1-1-13
joe 1-1-13
dave 1-1-13
joe 1-2-13
Run Code Online (Sandbox Code Playgroud)
我用它来创建和填充表格
create table #sales (name varchar(10), salesdate date )
insert into #sales (name, salesdate)
values ('joe', '01-01-2013'), ('joe','01-01-2013'),
('joe', '01-01-2013'), ('dave','01-01-2013'),
('joe','01-02-2013')
Run Code Online (Sandbox Code Playgroud)
我想要一个查询来提高每个销售人员的销售额百分比
(例如在1-1-13乔售出3个单位共有4个一天(75%),但我不知道SQL怎么能每日总量当天的所有销售的拉涨,无论销售人员
这跟我一样接近.
select name, salesdate, count(*) as "dailyTotal"
from #sales
group by name, salesdate
Run Code Online (Sandbox Code Playgroud)
如何包含每日总计,以便它可用于计算当天的总百分比?
因此,我有一个 SQL 查询,可以毫无问题地从 Active Directory 中提取数据(出于发布目的而精简):
SELECT TOP 901 *
FROM OpenQuery(ADSI, 'SELECT title, displayName, sAMAccountName, givenName, sn
FROM ''LDAP://DC=[STUFF],DC=[MOAR STUFF],DC=com''
where objectCategory = ''Person'' AND objectClass = ''User''')
Run Code Online (Sandbox Code Playgroud)
这会按预期拉取记录。我需要从我们信任的其他域中提取记录,因此我只需要更改 LDAP 字符串。但这样做只会返回一个泛型
“准备查询时发生错误...针对链接服务器“ADSI”**的 OLE DB 提供程序“ADSDSOObject”执行”(消息 7321,级别 16,状态 2)。
我说通用,因为我可以在 SELECT 语句中键入任何内容(将其搞乱),并且我会得到相同的消息。
我尝试过在字符串中使用和不使用 FQDN。我已确认链接服务器使用的登录名具有读取权限。有任何想法吗?
提前致谢!
-卡尔
sql-server ×9
sql ×4
t-sql ×2
adsi ×1
cross-apply ×1
dense-rank ×1
indexing ×1
inner-join ×1
partitioning ×1
performance ×1
pivot ×1
sql-agent ×1