小编Phi*_*lᵀᴹ的帖子

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

根据上一个月末值填充缺失数据

鉴于以下数据:

create table #histories
(
    username varchar(10),
    account varchar(10),
    assigned date  
);

insert into #histories 
values 
('PHIL','ACCOUNT1','2017-01-04'),
('PETER','ACCOUNT1','2017-01-15'),
('DAVE','ACCOUNT1','2017-03-04'),
('ANDY','ACCOUNT1','2017-05-06'),
('DAVE','ACCOUNT1','2017-05-07'),
('FRED','ACCOUNT1','2017-05-08'),
('JAMES','ACCOUNT1','2017-08-05'),
('DAVE','ACCOUNT2','2017-01-02'),
('PHIL','ACCOUNT2','2017-01-18'),
('JOSH','ACCOUNT2','2017-04-08'),
('JAMES','ACCOUNT2','2017-04-09'),
('DAVE','ACCOUNT2','2017-05-06'),
('PHIL','ACCOUNT2','2017-05-07') ; 
Run Code Online (Sandbox Code Playgroud)

...代表给定用户分配给帐户的时间。

我希望在每个月的最后一天确定谁拥有给定的帐户(分配的日期是帐户转移所有权的日期),并填充任何缺失的月末(可能是从dates我可用的方便表格中创建的,带有有用的列DateKey,DateLastDayOfMonth, [@AaronBertrand 提供]) 1 .

期望的结果是:

PETER, ACCOUNT1, 2017-01-31
PETER, ACCOUNT1, 2017-02-28
DAVE, ACCOUNT1, 2017-03-31
DAVE, ACCOUNT1, 2017-04-30
FRED, ACCOUNT1, 2017-05-31
FRED, ACCOUNT1, 2017-06-30
FRED, ACCOUNT1, 2017-07-31
JAMES, ACCOUNT1, 2017-08-31
PHIL, ACCOUNT2, 2017-01-31
PHIL, ACCOUNT2, 2017-02-28
PHIL, ACCOUNT2, 2017-03-31 …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2 gaps-and-islands

12
推荐指数
1
解决办法
2652
查看次数

如何确保只有一个过程副本在 Oracle 中运行?

我们需要确保只有一个特定过程的副本在 Oracle 中运行。如果它已经在运行并且用户试图打开另一个,那么它应该会出错。

这样做的最佳方法是什么?

oracle oracle-11g-r2 plsql locking

11
推荐指数
1
解决办法
6166
查看次数

每次我在 SQLPlus 中犯错时我都必须重新输入信息吗

如果我在输入“插入”命令时在 SQLPlus 中犯了错误,有没有办法可以将这些信息带回来以进行编辑?

oracle sqlplus

11
推荐指数
1
解决办法
1211
查看次数

SQL Server - NTEXT 列和字符串操作

我有一个表,其中有一NTEXT列名为comments. 我有第二个字符串,我们称之为anothercomment(a varchar),它需要放在comments单词 之后的给定字符串中UPDATEHERE

强制转换会nvarchar(max)截断comments字符串,因此我不能使用CHARINDEX()( Msg 8152, Level 16, State 10, Line 2 String or binary data would be truncated.)。我曾经datalength()检查过是否有几千列 > 8000 个字符。

我想要实现的示例(尽管字符串更长):

注释 - This is a test UPDATEHERE This is the end of the test

另一个评论—— . This is inserted.

结果字符串 - This is a test UPDATEHERE. This is inserted. This is the end of the test …

sql-server sql-server-2008-r2 string

11
推荐指数
2
解决办法
7550
查看次数

“位图堆扫描”中的“堆块”是什么意思?

我有这个查询:

EXPLAIN (ANALYZE, BUFFERS) 
SELECT * FROM test
WHERE
    timestamp_range @> '2015-01-22 23:00:00'::timestamp
    AND data_int_array @> '{49, 61}'::integer[];
Run Code Online (Sandbox Code Playgroud)

哪些输出:

Bitmap Heap Scan on test  (cost=16.74..20.75 rows=1 width=113) (actual time=0.364..0.367 rows=2 loops=1)
  Recheck Cond: ((timestamp_range @> '2015-01-22 23:00:00'::timestamp without time zone) AND (data_int_array @> '{49,61}'::integer[]))
  Heap Blocks: exact=1
  Buffers: shared hit=8
  ->  BitmapAnd  (cost=16.74..16.74 rows=1 width=0) (actual time=0.351..0.351 rows=0 loops=1)
        Buffers: shared hit=7
        ->  Bitmap Index Scan on ix_test_interval  (cost=0.00..4.40 rows=17 width=0) (actual time=0.130..0.130 rows=12 loops=1)
              Index Cond: (timestamp_range @> '2015-01-22 …
Run Code Online (Sandbox Code Playgroud)

postgresql explain postgresql-9.4

10
推荐指数
1
解决办法
4657
查看次数

Brent Ozar First Responder Kit 过滤器

大约每周一次,查询 sp_Blitz @IgnorePrioritiesAbove = 50, @CheckUserDatabaseObjects = 0 显示非常旧的数据库备份的“错误”。

显示这一点是正确的,但是如果可用性组 DB 位于辅助节点上且未备份(我使用 Ola 的脚本来备份 DB),是否可以过滤此错误?

sql-server sql-server-2014 sp-blitz

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

如何增加 Redshift 数据库表中的列大小?

在 oracle 中,我可以:

Alter table table_name
modify column_name datatype;
Run Code Online (Sandbox Code Playgroud)

这在红移数据库中可能吗?

redshift

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

除非指定了自定义错误消息,否则 THROW 不包括调用过程的名称

我正在经历一些THROW我无法理解的行为。考虑以下存储过程:

CREATE PROCEDURE usp_division_err AS 
SET NOCOUNT ON;
BEGIN TRY
    EXEC('select 1/0')
END TRY
BEGIN CATCH
    THROW;
END CATCH 
Run Code Online (Sandbox Code Playgroud)

执行该过程时,会引发以下错误:

消息 8134,级别 16,状态 1,第 1 行
遇到除以零错误。

请注意,没有包含有关在哪个过程中引发错误的信息。那是因为错误的动态 SQL 在另一个作用域中执行,这很好。但是,将CATCH-block更改为如下所示

BEGIN CATCH
    THROW 50000, 'An error occurred.', 1;
END CATCH 
Run Code Online (Sandbox Code Playgroud)

并且该过程的执行将引发此错误:

Msg 50000, Level 16, State 1, Procedure usp_division_err, Line 7 [Batch Start Line 0]
发生错误。

执行动态SQL时仍然遇到错误,但是当我手动指定错误号和错误消息( 的第一个和第二个参数THROW)时,不知何故出现了执行过程的procedure-name。

为什么过程名称出现在第二个错误消息中而不是第一个错误消息中?

sql-server t-sql sql-server-2012

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

当数据库引擎无法启动时,从 oracle 12c 中损坏的 REDO 文件中恢复

我的 Windows 7 开发机器上安装了 Oracle 12.0.1.2.0(企业包)。意外断电后,Oracle 引擎无法启动:

因此,我无法连接 SQLplus 来执行任何命令,因此,我在网上找到的用于清除 REDO 文件的指南都不适合我。

ORA-01033: ORACLE initialization or shutdown in progress
01033. 00000 -  "ORACLE initialization or shutdown in progress"
*Cause:    An attempt was made to log on while Oracle is being started up or shutdown.
*Action:   Wait a few minutes. Then retry the operation.
Vendor code 1033
Run Code Online (Sandbox Code Playgroud)

这是启动日志:

...
Mon Jun 19 10:56:47 2017
Beginning crash recovery of 1 threads
parallel recovery started with 3 processes
Mon Jun 19 10:56:47 2017 …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-12c

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