所以这就是我到目前为止所拥有的:
--Read xml content into a XML data type variable
DECLARE @FileData XML
SELECT @FileData = CONVERT(XML, BulkColumn)
FROM OPENROWSET(BULK '\\file_path\test.xml', SINGLE_BLOB) AS x
--Read from the XML variable to create Entity-Attribute-Value table
SELECT N1.Id.value('@Id', 'varchar(50)') as Id
, N1.Id.value('@Name', 'varchar(100)') as Name
, N2.AttributeLongName.value('@AttributeName', 'varchar(100)') as AttributeName
, N3.AttributeValue.value('.', 'varchar(MAX)') as AttributeValue
FROM @FileData.nodes('/Data/Entities/Entity') as N1(Id) ---1st lvl Node contains the Entity
cross apply Id.nodes('Attributes/Attribute') as N2(AttributeName) --2nd lvl Node contains AttributeName
cross apply AttributeName.nodes('Values/Value') as N3(AttributeValue) --3rd lvl …Run Code Online (Sandbox Code Playgroud) 我正在使用 SQL Server 2008 R2
我们有一个存储过程,它在运行时会导致 100% 的 CPU 使用率。所述 SP 每月运行一次,并执行大约 5 分钟的繁重计算。
由于 SP 每月运行一次,我们并不特别关心是否需要 30 分钟或更长时间才能完成该过程,但是占用所有可用的 CPU 资源是有问题的。我们想限制此特定存储过程的 CPU 使用率。
SQL Server 中有这样的选项吗?
我必须UPDATE在具有 50 万条记录的实时在线数据库上运行一条语句。我想知道哪个语句运行得更快:
Update Table set REC_ID = isnull(REC_ID,'')
Update Table set REC_ID = '' where REC_ID is null
Run Code Online (Sandbox Code Playgroud)
我正在使用 Microsoft SQL Server 2012
根据MS 的知识库,
除了 COUNT,聚合函数忽略空值。
有谁知道我怎样才能让它正常工作,也就是说,如果它试图与值中的空值聚合,则返回空值?
例子:
SELECT SUM("col")
FROM (
SELECT NULL "col"
UNION
SELECT 1 "col"
) test
Run Code Online (Sandbox Code Playgroud)
我希望这个查询返回NULL,而不是 1。
我有一个表currency,paymenttype和invoiceamount。我必须写一个查询来获取currency,paymenttype并invoiceamount完成。
这对于 group by 来说非常简单。但实际上我有3种支付类型——0、1、2。表中的数据是
Currency PaymentType Invoice Amount
Aaa. 0. 100
Aaa. 1. 200
Aaa. 1. 50
Bbb. 0. 150
Bbb. 1. 100
Bbb. 2. 100
Run Code Online (Sandbox Code Playgroud)
我的查询是
Select currency, paymenttype, sum(invoiceamount) as total
from table
group by currency, paymenttype
Run Code Online (Sandbox Code Playgroud)
结果
Currency paymenttype total
Aaa. 0. 100
Aaa. 1. 250
Bbb. 0. 150
Bbb. 1. 100
Bbb. 2. 100
Run Code Online (Sandbox Code Playgroud)
作为Aaa。没有paymenttype2 它也应该显示一个值为 0 的行,如下所示。
Aaa. 2. 0 …Run Code Online (Sandbox Code Playgroud) 假设我有一张Customers桌子和一张Emails桌子。Emails表有这些字段:
Id
CustomerId
EmailValue
Run Code Online (Sandbox Code Playgroud)
现在,我想创建一个约束,以便每个客户都不应该注册重复的电子邮件。我能想到的方法有:
但是,我最近熟悉了 SQL Server 的筛选索引。尽管我不知道它在这种特定情况下是否可以帮助我。我见过的大多数示例都是过滤掉NULL值,以便为可空列创建唯一索引。
有没有办法可以使用过滤索引来实现我想要的?
从其他位列计算位列的公式是什么?
例如:
CREATE TABLE #Employee
(
[empNumb] [INT] identity(1,1) PRIMARY KEY,
[IsOk] [BIT] NOT NULL, -- This is computed from other three columns.
[HasValidHours] [BIT] NOT NULL,
[NoDemerits] [BIT] NOT NULL,
[NoAccidents] [BIT] NOT NULL
);
ALTER TABLE #Employee ADD CONSTRAINT [DF_Employee_HasValidHours]
DEFAULT ((0)) FOR [HasValidHours];
ALTER TABLE #Employee ADD CONSTRAINT [DF_Employee_NoDemerits]
DEFAULT ((0)) FOR [NoDemerits];
ALTER TABLE #Employee ADD CONSTRAINT [DF_Employee_NoAccidents]
DEFAULT ((0)) FOR [NoAccidents];
Run Code Online (Sandbox Code Playgroud)
IsOk将根据,和的和-ing计算。HasValidHoursNoDemeritsNoAccidents
我们有一个大小超过 200GB 的 SQL Server 2008 数据库。服务器上没有磁盘空间来进行备份。我真的需要备份或制作此数据库的另一个副本。实现这一目标的最佳方法是什么?
谢谢
快速提问,我确实尝试过谷歌但找不到答案。
我在这里有 3 个单独的查询,我想做SET IN ('price1', 'price2', 'price3')但是当我尝试时出现错误。我该怎么做?
Update apotable
set price1 = '0.00'
where po_number IN ('x', 'y', 'z')
Update apotable
set price2 = '0.00'
where po_number IN ('x', 'y', 'z')
Update apotable
set price3 = '0.00'
where po_number IN ('x', 'y', 'z')
Run Code Online (Sandbox Code Playgroud) 如何使用维护计划或代理作业在 SQL Server(我同时使用 SQL Server 2005 和 2008)上每月仅备份特定日期。我的意思是从每个月的 28 号备份我的数据库到下个月的 08 号等等?
sql-server ×10
null ×2
aggregate ×1
backup ×1
join ×1
performance ×1
table ×1
update ×1
xml ×1
xquery ×1