小编M.A*_*Ali的帖子

如何在没有日志的SQL中删除表的大数据?

我有一个大数据表.该表中有1000万条记录.

这个查询的最佳方法是什么?

   Delete LargeTable where readTime < dateadd(MONTH,-7,GETDATE())
Run Code Online (Sandbox Code Playgroud)

sql-server sql-optimization sql-server-2008

104
推荐指数
6
解决办法
19万
查看次数

在SQL Server中,如何在select中创建while循环

数据将是这样的:

    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)

sql t-sql sql-server sql-server-2008

12
推荐指数
3
解决办法
20万
查看次数

主键列上的非聚集索引?

我在表上有一个主键(比如ContactID).SQL Server自动在此列上创建和维护聚簇INDEX.当我运行Tuning Advisor时(针对性能跟踪),它似乎建议在同一列上使用另一个INDEX - contactID列上的NON CLUSTERED索引.这将如何帮助 - 因为列上已经有聚簇索引?

sql-server indexing performance sql-server-2008

8
推荐指数
2
解决办法
1万
查看次数

存储过程中的临时表将导致重新编译执行计划

如果我Temp Tables在存储过程的定义中创建,然后dropping them when I am done使用它们将导致重新编译执行计划?

对于存储过程每次调用它?任何个人经历?有什么解释吗?

当在每次调用结束时删除临时表时,执行计划变为无效.SQL Server是否仍然保留执行计划并在下次调用时重用,或者在每次调用时重新编译它.

sql-server stored-procedures sql-server-2008 sql-server-2008-r2

7
推荐指数
1
解决办法
6192
查看次数

SQL SERVER代理自动停止工作

过去几周我一直遇到一个奇怪的问题.在我的两个不同的服务器上,sql server Agent自动停止工作,我所要做的就是重新启动代理并重新启动它.但是因为它停止工作,它会错过备份作业我和我在其上安排的其他几个作业Sql Agents.

任何其他服务器都不会发生这种情况,但它只发生在这两个特定的服务器上.

所有服务器都是SQL SERVER 2008 R2,数据中心版.64位.

有没有人遇到同样的问题,如果是的你做了什么来解决它?

sql-server sql-server-2008-r2 sql-agent

6
推荐指数
3
解决办法
4万
查看次数

内部多次连接同一个表

所以我收到了这个错误:#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)

sql inner-join

6
推荐指数
1
解决办法
1万
查看次数

按列名连接表,将字符串转换为列名

我有一张桌子,每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)

t-sql sql-server pivot cross-apply

6
推荐指数
1
解决办法
2468
查看次数

Row_Number() 根据连续行进行分区

我正在研究 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)

sql-server partitioning sql-server-2008 dense-rank

6
推荐指数
1
解决办法
3453
查看次数

如何计算分组中的总分百分比?

我有一张桌子,每位销售人员每天销售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 sql-server

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

AD 的 SQL 链接服务器查询返回消息 7321

因此,我有一个 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 sql-server adsi active-directory

5
推荐指数
1
解决办法
1万
查看次数