我有一个Mydatabase
在 SQL Server 2008 R2 中创建的数据库。我已经升级到 SQL Server 2012。
我试图执行以下查询来计算百分位数
select Distinct [KEY],PERCENTILE_CONT(0.25) within group(order by EachPrice)
OVER(Partition By [KEY]) As Q1,PERCENTILE_CONT(0.50) within group(order by EachPrice)
OVER(Partition By [KEY]) As Q2,
PERCENTILE_CONT(0.75) within group(order by EachPrice)
OVER(Partition By [KEY]) As Q3,
PERCENTILE_CONT(1) within group(order by EachPrice)
OVER(Partition By [KEY]) As Q4
from Mydatabase
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误说明
消息 10762,级别 15,状态 1,第 1 行
当前兼容模式下不允许使用 PERCENTILE_CONT 函数。仅允许在 110 模式或更高模式下使用。
请指教
我有一个带有 varchar 列的表。它允许使用商标 (™)、版权 (©) 和其他 Unicode 字符,如下所示。
Create table VarcharUnicodeCheck
(
col1 varchar(100)
)
insert into VarcharUnicodeCheck (col1) values ('MyCompany')
insert into VarcharUnicodeCheck (col1) values ('MyCompany™')
insert into VarcharUnicodeCheck (col1) values ('MyCompany?')
insert into VarcharUnicodeCheck (col1) values ('MyCompanyï')
insert into VarcharUnicodeCheck (col1) values ('MyCompany')
select * from VarcharUnicodeCheck
Run Code Online (Sandbox Code Playgroud)
但是varchar的定义说,它允许非 unicode 字符串数据。但 Trademark(™) 和 Registered(®) 符号是Unicode字符。定义是否与 varchar 数据类型的属性相矛盾?我阅读了几个链接,例如第一个和第二个。但是我仍然不明白为什么当定义说它只允许非 unicode 字符串值时它允许 unicode 字符串。
我正在使用 SQL Server 2012。我安排了一个作业每 1 小时运行一次,其中 1 个步骤调用 1 个简单的存储过程。存储过程将大约 1K 数据从生产服务器迁移到我们的本地服务器。已成功建立链接服务器。存储过程中使用的查询如下所示。
SELECT ID,Col1,Col2,Col3,Col4,Col5 into #temp from [111.111.111.111].ProdServer.dbo.SourceTable
Insert into Localtable(ID,Col1,Col2,Col3,Col4,Col5)
SELECT ID,Col1,Col2,Col3,Col4,Col5
FROM #temp where ID NOT IN (select ID from Localtable)
Run Code Online (Sandbox Code Playgroud)
作业执行有时需要 25-30 秒才能成功执行。有时需要 48-50 秒导致失败。请参阅下面的失败消息和上面屏幕截图中的其他详细信息。
以用户身份执行:NT AUTHORITY\NETWORK SERVICE。命名管道提供程序:无法打开与 SQL Server [53] 的连接。[SQLSTATE 42000](错误 53)链接服务器“111.111.111.111”的 OLE DB 访问接口“SQLNCLI10”返回消息“登录超时已过期”。[SQLSTATE 01000](错误 7412)链接服务器“111.111.111.111”的 OLE DB 访问接口“SQLNCLI10”返回消息“与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。服务器未找到或未找到可访问。检查实例名称是否正确,以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。”。[SQLSTATE 01000](错误 7412)。步骤失败。
作为最后一个选项,我尝试将连接超时设置从默认值 15 更改为 6000 …
我正在使用 SQL Server 2008 R2。我需要在默认情况下创建一个简单的存储过程,当在 SQL Server 中创建新数据库时。我怎样才能做到这一点?假设要创建的存储过程是
CREATE PROCEDURE [dbo].[Default_SP]
AS
BEGIN
SELECT GETDATE()
END
Run Code Online (Sandbox Code Playgroud)
触发器可以应用于表级别。但这是在数据库创建事件上。我在网上搜索,我找不到答案。
我正在看这篇关于trim all columns of a table 的帖子。在答案查询脚本中,列名被连接起来,没有任何循环操作。我简化了它以检查其工作流程,如下所述。
创建一个新的数据库
创建一个包含三列的新表,如下面的脚本所示。(不需要插入值)
Create table table1(id int, name varchar(20), city varchar(20))
Run Code Online (Sandbox Code Playgroud)
在 T-SQL 脚本下面执行,结果xxx [id] [name] [city]
是单行。
Declare @a as varchar(4000)
SET @a = 'xxx '
SELECT @a = @a + '['+COLUMN_NAME+'] ' FROM INFORMATION_SCHEMA.COLUMNS
SELECT @a
Run Code Online (Sandbox Code Playgroud)以下脚本导致 3 行
Declare @a as varchar(4000)
SET @a = 'xxx '
SELECT 'b' = @a + '['+COLUMN_NAME+'] ' FROM INFORMATION_SCHEMA.COLUMNS
Run Code Online (Sandbox Code Playgroud)
为了更好地理解,我使用Top 1
. 这结果xxx [id]
Declare @a as varchar(4000)
SET …
Run Code Online (Sandbox Code Playgroud) 我有一个场景,如果部分单词与另一列匹配,则从一组逗号分隔的字符串中替换整个字符串。
我发现用文字解释非常复杂,因此我通过包含各种示例的屏幕截图进行了解释。
请帮助我使用存储过程或函数或查询来获取所需结果列中的结果,如下面的屏幕截图所示。
我尝试使用STRING_SPLIT
函数来分割值并连接表。我对解决这个问题的逻辑感到震惊。