对不起,如果这是在其他地方,我发现了很多类似的例子,但我一直无法使用我的数据.2天后,我需要一个答案:(
基本上有一个SQL Server表,其中包含一个包含XML数据的列.此数据包含我需要提取的值.
这是我的XML.
<CustomFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.kaseya.com/vsa/2007/12/ServiceDeskDefinition.xsd">
<Field fieldName="AutoCategory">Event Log</Field>
<Field fieldName="SType">Event Log</Field>
<Field fieldName="STag1">AgentGuid</Field>
<Field fieldName="STag2">AlertRegistrationId</Field>
<Field fieldName="STag3">LogType</Field>
<Field fieldName="SValue1">619764177412541</Field>
<Field fieldName="SValue2">104</Field>
<Field fieldName="SValue3">1380569194</Field>
<Field fieldName="SdTicketId">RPSv1006330</Field>
<Field fieldName="AgentName">bla bla</Field>
<Field fieldName="MachineGroupGuid">86115414719112271316891312</Field>
<Field fieldName="OrgFk">59165166782128125214185317</Field>
<Field fieldName="GuidAgent">619764177412541</Field>
<Field fieldName="AlertCount">0</Field>
<Field fieldName="TicketTitle">bla bla</Field>
<Field fieldName="LegacyId">152262</Field>
<Field fieldName="LegacyRef">152262</Field>
<Field fieldName="CwStatus">2</Field>
<Field fieldName="CwTicketId">89495</Field>
</CustomFields>
Run Code Online (Sandbox Code Playgroud)
我需要能够提取与CwTicketId
字段名称关联的值.
所以从本质上讲,我想通过XML来查找带有fieldName = "CwTicketId"
和返回的节点89495
或等价值.
下面是我自己提出的代码,它将值拉出来,但问题是有时XML的排序方式不同,因此值并不总是在我指定的行上,因此它返回准确的数据.
;WITH XMLNAMESPACES(DEFAULT N'http://www.kaseya.com/vsa/2007/12/ServiceDeskDefinition.xsd')
SELECT
ref as ServiceDeskID,
sdSummary as ServiceDeskSummary,
customFields.value('(/CustomFields/Field/node())[17]', 'varchar(100)') as LegacyIDTicketing,
customFields.value('(/CustomFields/Field/node())[19]', 'varchar(100)') as CWIDTicketing …
Run Code Online (Sandbox Code Playgroud) CREATE TABLE [Users_Reg]
(
[User_ID] [int] IDENTITY (1, 1) NOT NULL CONSTRAINT User_Reg_P_KEY PRIMARY KEY,
[Name] [varchar] (50) NOT NULL,
[Type] [varchar] (50) NOT NULL /*Technician/Radiologist*/
)
CREATE Table [Study]
(
[UID] [INT] IDENTITY (1,1) NOT NULL CONSTRAINT Patient_Study_P_KEY PRIMARY KEY,
[Radiologist] [int], /*user id of Radiologist type*/
[Technician] [int], /*user id of Technician type*/
)
select * from Study
inner join Users_Reg
on Users_Reg.User_ID=Study.Radiologist
Run Code Online (Sandbox Code Playgroud)
在patient_study表中,放射科医师或技师可能有0值.我如何从查询中获得技术员姓名和放射科医生姓名.
我有以下表名JobTitle
JobID LanaguageID
-----------------
1 1
1 2
1 3
2 1
2 2
3 4
4 5
5 2
Run Code Online (Sandbox Code Playgroud)
我从表中选择所有记录,除了重复JobID的计数> 1.我只从重复的JobID中选择一个记录/第一行.现在我将LanguageID作为参数传递给存储过程,我想为该languageID选择重复的JobID以及其他记录.如果我已将languageID作为1传递,则输出应如下所示
JobID LanaguageID
-----------------
1 1
2 1
3 4
4 5
5 2
Run Code Online (Sandbox Code Playgroud)
我尝试过使用以下查询.
with CTE_RN as
(
SELECT ROW_NUMBER() OVER(PARTITION BY JobTitle.JobID ORDER BY JobTitle.JobTitle) AS RN
FROM JobTitle
INNER JOIN JobTitle_Lang
ON JobTitle.JobTitleID = JobTitle_Lang.JobTitleID
)
Run Code Online (Sandbox Code Playgroud)
但我无法在上面的查询中使用WHERE子句.是否应遵循任何不同的方法.或者我如何修改查询以获得所需的输出
我需要存储简单的数据 - 假设我有一些产品将代码作为主键,一些属性和有效范围.所以数据可能如下所示:
Products
code value begin_date end_date
10905 13 2005-01-01 2016-12-31
10905 11 2017-01-01 null
Run Code Online (Sandbox Code Playgroud)
这些范围不重叠,所以在每个日期我都有一系列独特的产品及其属性.所以为了简化它的使用,我创建了这个函数:
create function dbo.f_Products
(
@date date
)
returns table
as
return (
select
from dbo.Products as p
where
@date >= p.begin_date and
@date <= p.end_date
)
Run Code Online (Sandbox Code Playgroud)
这就是我要用它的方式:
select
*
from <some table with product codes> as t
left join dbo.f_Products(@date) as p on
p.code = t.product_code
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我怎么能让优化器知道那些行是唯一的,有更好的执行计划?
我做了一些谷歌搜索,发现了一些非常好的DDL文章,可以防止在表格中存储重叠范围:
但即使我尝试这些约束,我也看到优化器无法理解结果记录集将返回唯一代码.
我想要的是某种方法,它给了我基本相同的性能,就像我在某个日期存储这些产品列表并选择它一样date = @date
.
我知道一些RDMBS(如PostgreSQL)具有特殊的数据类型(Range Types
).但是SQL Server没有这样的东西.
我错过了什么,或者在SQL Server中没有办法正确地做到这一点?
我是一名非常适合MS SQL服务器的学校老师.每个人都建议尝试这个网站.开始!
我正在尝试编写查询来测试参与学术计划的不同类型的结果测量.有几种不同的方法来计算我想尝试的结果测量.我想要计算的结果是: 在六个月的课程中保留的参与者百分比是多少?我正在测试不同的方式来定义参与者和不同的时间范围.我正在尝试生成4个查询.不幸的是,我必须使用不同的表:出勤,状态,退出,非活动.我已经在下面列出了每个样本数据
参与者(分子)参与者/所有服务的学生(分母)
我正在寻找的4个查询输出是这个的不同版本:
例
Participants Served Percent_Served
75 100 75%
Run Code Online (Sandbox Code Playgroud)
我一直在乱搞下面的查询的不同版本
SELECT
Count (distinct ID) as Count,
Count ( DATEADD( dd, -181, DATEADD(wk, DATEDIFF(wk,0,Date), 0)) > 2 as Participants ,
FROM Attendance
where Attendence_date date between '07/01/2012' and '06/30/2013'
and ID not in (Select ID from Inactive)
or ID not in (select ID from Deenrolled)
GROUP BY …
Run Code Online (Sandbox Code Playgroud) 我想在SQL表中更新1列.示例:列中的当前值如下所示
2013/09/pizzalover.jpg
2013/10/pasta.jpg
Run Code Online (Sandbox Code Playgroud)
现在我想像这样更新整个专栏:www.mypizza.com/2013/09/pizzalover.jpg有什么方法可以实现这个目标吗?提前致谢
我有一个数据表:
itemID itemLocation quantity
-------------------------------------------------------
B008KZK44E COMMITED 1
B008KZK44E PRIME 1
B008KZK2LE COMMITED 1
Run Code Online (Sandbox Code Playgroud)
我需要用这个节点结构生成一个xml:
<inventoryItemData>
<itemID type="FAMILY">B008KZK2LE</itemID>
<availabilityDetail>
<itemQuantity>
<quantity unitOfMeasure="EA">1</quantity>
<itemLocation>COMMITED</itemLocation>
</itemQuantity>
</availabilityDetail>
</inventoryItemData>
<inventoryItemData>
<itemID type="FAMILY">B008KZK44E</itemID>
<availabilityDetail>
<itemQuantity>
<quantity unitOfMeasure="EA">1</quantity>
<itemLocation>COMMITED</itemLocation>
</itemQuantity>
</availabilityDetail>
<availabilityDetail>
<itemQuantity>
<quantity unitOfMeasure="EA">1</quantity>
<itemLocation>PRIME</itemLocation>
</itemQuantity>
</availabilityDetail>
</inventoryItemData>
Run Code Online (Sandbox Code Playgroud)
我越接近这个:
SELECT
'itemID' AS 'itemID/@type',
itemID AS 'itemID',
'' AS 'availabilityDetail',
'' AS 'availabilityDetail/itemQuantity',
'EA' AS 'availabilityDetail/itemQuantity/quantity/@unitOfMeasure',
quantity AS 'availabilityDetail/itemQuantity/quantity',
itemLocation AS 'availabilityDetail/itemQuantity/itemLocation'
FROM TABLE
FOR XML PATH ('inventoryItemData')
Run Code Online (Sandbox Code Playgroud)
我很感激任何解决方案.
谢谢.
我有部门的表.我需要计算在哪个部门内有多少人.这很容易做到
SELECT DEPT,
COUNT(*) as 'Total'
FROM SR
GROUP BY DEPT;
Run Code Online (Sandbox Code Playgroud)
现在我还要做累积计数如下:
我发现一些SQL来计算运行总数,但不是这样的情况.在这种情况下,你能给我一些建议吗?
假设我有一个像这样的DataFrame:
>>> df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['a','b','b'])
>>> df
a b b
0 1 2 3
1 4 5 6
2 7 8 9
Run Code Online (Sandbox Code Playgroud)
我想删除第二'b'
列.如果我只使用del
语句,它将删除两'b'
列:
>>> del df['b']
>>> df
a
0 1
1 4
2 7
Run Code Online (Sandbox Code Playgroud)
我可以逐个选择列.iloc[]
并重新分配DataFrame,但是如何只删除第二'b'
列,例如通过索引?
我在sql中有两个表.一个是测试用例表,另一个是测试运行表,其中一个外键链接回测试用例.我想为每个测试用例获得最近10次测试运行.如果我不需要,我不想循环,但我没有看到任何其他方法来解决这个问题.在sql server中处理这类事情最有效的方法是什么?
sql ×9
sql-server ×8
t-sql ×3
date-range ×2
xml ×2
date ×1
intervals ×1
iteration ×1
pandas ×1
python ×1
sql-update ×1
sqlxml ×1
xquery ×1