是否可以重载 sql server 函数?要么是标量,比如 ltrim,要么是聚合函数,比如 count?
即使这是一个非常非常糟糕的主意。可能吗?
有点像T-SQL 用户定义的函数重载的副本?我会说它不是 100% 重复的,因为那是 2005 版的。也许这已经改变了?
是否可以重载 sql server 函数?要么是标量,比如 ltrim,要么是聚合函数,比如 count?
即使这是一个非常非常糟糕的主意。可能吗?
有点像T-SQL 用户定义的函数重载的副本?我会说它不是 100% 重复的,因为那是 2005 版的。也许这已经改变了?
我借用了一些关于如何压缩和解压缩诊断代码字符串的代码,以便为我的数据仓库构建一个桥接表。它运作良好。但是,我只是不明白它是如何进行压缩的。这是以下代码的 SQL Fiddle
create table dimDiagnosisGroup (dxGroupKey int, dxCodeList nvarchar(1024))
insert into dimDiagnosisGroup
values (1,'042, 070.70, 722.10'),
(2,'042, 070.70, 780.52, 496, 716.90, 581.9'),
(3,'042, 070.70, 782.1, V58.69'),
(4,'042, 070.70, 782.3, V58.69')
WITH XMLTaggedList AS (
SELECT dxGroupKey,
CAST('<I>' + REPLACE(dxCodeList, ', ', '</I><I>') + '</I>' AS XML)
AS Diagnosis_Code_List
FROM dimDiagnosisGroup
)
SELECT dxGroupKey,
ExtractedDiagnosisList.X.value('.', 'VARCHAR(MAX)') AS dxCodeList2
FROM XMLTaggedList
CROSS APPLY Diagnosis_Code_List.nodes('//I') AS ExtractedDiagnosisList(X)
我理解XMLTaggedList部分很好。我不明白的是 Cross Apply 到ExtractedDiagnosisList(X),然后是ExtractedDiagnosisList.X.value('.', 'VARCHAR(MAX)')。
当我在 select 语句中将鼠标悬停在ExtractedDiagnosisList上时,SSMS 说它是一个派生表。但是,它对我来说有点像一个功能。我不明白Diagnosis_Code.List如何获取 .nodes('//I') 函数。最后,在 SQL 中, ExtractedDiagnosisList.X.value部分对我来说看起来很陌生。它看起来像 C# 等语言的语法。
我正在使用 SSRS 并添加基于带有参数的存储过程的共享数据集。当我去刷新字段以便 Visual Studio 添加正确的参数和字段时,有时我会收到以下错误消息:
无法为查询创建字段列表。验证您是否可以连接到数据源以及您的查询语法是否正确。
详细信息是
过程或函数“SP NAME”需要参数“@parameter name”,但未提供该参数。
问题发生得非常随机。有时它有效,有时则无效。存储过程中的内容无关紧要。如果没有字段和参数列表,您将无法将数据集添加到报表中。
谢谢!
当我尝试安装 SQL Server Management Studio 17.0 版时,我收到以下错误消息:
“无法安装 SQL Server Management Studio (SSMS) v17.0 的普遍可用 (GA) 版本,因为您的计算机上安装了 SSMS 的预发布版本。从“添加/删除程序”中卸载 SSMS 的预发布版本' 在控制面板中并再次运行 SSMS 设置。”
我卸载了预发布版本,但仍然有问题。当我查看日志文件时,导致问题的条件是
[1118:18D4][2017-05-09T16:05:55]i052:条件 'NOT RCBitsInstalled OR (RCBitsInstalled > "2016.140.17030.0" OR RCBitsInstalled < "2016.140.0.0")' 评估为假。
但是进一步查看日志文件,该值似乎很好。
[1118:18D4][2017-05-09T16:05:55]i000:将版本变量“RCBitsInstalled”设置为值“2016.140.16000.64”
有人知道解决这个问题的方法吗?谢谢!
我有以下查询:
update Table1
set id=2
where nbr in (select nbr from Other.dbo.table)
“从 Other.dbo.table 中选择 nbr”有 500 条记录。然而,当我运行更新时,它说我正在更新 1,000 条记录。我检查了 table1,只有 500 行匹配过滤器。
select * from table1 where nbr in (select nbr from Other.dbo.table)
我尝试将查询更改为连接并使用临时表来存储过滤器列表,但我收到了相同的结果。
为什么只有 500 条匹配时我要更新 1000 条记录?
Table1 上有一个更新触发器。