早上好,
我的第一个问题是如何确定在 MS SQL Server 中创建的表是否是内存优化的。我有一些表,但我不记得我创建的其中一些表是否经过内存优化。
非常感谢您的回答。
我有一个带有 XML 列的表。每个条目的 XML 结构都是完全扁平的,甚至没有父标签 - 这是一个条目的示例:
<tag1>1.22</tag1>
<tag3>5</tag3>
<tag12>-1.22</tag>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经能够做这样的事情:
SELECT CAST(xml_column AS NVARCHAR(MAX)) as XML_text
Run Code Online (Sandbox Code Playgroud)
并在我这边解析 XML。或者我显然可以编写xpath查询来将标签选择到列中,这就是我想要的,除了大约有 1000 个可能的标签名称,而且我不想将它们全部写出来(并且可能会错过一个)。
简而言之,我该如何处理:
| ID | XML type column |
| 1 | <tag1>1</tag1><tag2>2</tag2> |
| 2 | <tag2>8</tag2><tag34>1</tag34> |
Run Code Online (Sandbox Code Playgroud)
对此:
| ID | tag1 | tag2 | tag34 |
| 1 | 1 | 2 | NULL |
| 2 | NULL | 8 | 1 |
Run Code Online (Sandbox Code Playgroud)
对于我可以在数据集中找到的任何标签,而无需提前知道它们?我也愿意解决这个问题:
| ID | tag | value |
| …Run Code Online (Sandbox Code Playgroud) 我使用tsql只打印时间.我最终获得毫秒部分.例如
CONVERT(TIME, entrytime,20) as entrytime
Run Code Online (Sandbox Code Playgroud)
这给了我
16:00:07.0000000
Run Code Online (Sandbox Code Playgroud)
我怎么能摆脱.0000000
如何将这些日期值从varchar转换为datetime2?
WITH dates AS (
SELECT '6.7.2012' AS dtm
UNION
SELECT '13.2.2012' AS dtm
UNION
SELECT '3.12.2012' AS dtm
UNION
SELECT '20.11.2012' AS dtm
)
SELECT CAST(dtm as datetime2) FROM dates
;
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
消息241,级别16,状态1,行6
转换从字符串转换日期和/或时间时失败.
我有一个领域
BestStreet 123/56
Run Code Online (Sandbox Code Playgroud)
而且我想得到
BestStreet
Run Code Online (Sandbox Code Playgroud)
我试过了:
LEFT(sd.UliceCP, CHARINDEX(' ', sd.UliceCP)-1)
Run Code Online (Sandbox Code Playgroud) 我是SSRS的新手,我不确定它是否会做我想做的事。
我在SSRS中遇到以下错误:
“文本框'Textbox17'的值表达式引用字段'DayCnt'。报表项表达式只能引用具有当前数据集范围的字段,或者,如果在聚合内,则是指定数据集范围的字段。字段名称中的字母必须使用正确的大小写。”
我有一个3行3列的列表。我需要在行和列中使用多个数据集。我希望报告中的所有内容都按每个数据集的学校ID分组。
在某些情况下,我将在每个单元格中使用多个数据集,并且使用文本框,然后将数据集字段拖到其中。我不确定是否是分组问题。我不确定如何一次对整个列表进行分组,或者它是基于行的,也不知道如何将分组与具有多列的列表一起使用。
我如何才能根据学校ID获得列表中的所有内容?
谢谢您的帮助。
我有一个带有递增颜色编号的表,以及相应的HTML-hex值.(没有#的十六进制值)
CREATE TABLE dbo.T_SYS_ColorToHex
(
COL_Number int NOT NULL
,COL_Hex varchar(6) NULL
,CONSTRAINT PK_T_SYS_ColorToHex PRIMARY KEY (COL_Number)
);
Run Code Online (Sandbox Code Playgroud)
现在给我一种颜色,
例如'007FFF',需要在表格中找到最近的颜色(T_SYS_ColorToHex).
我该怎么做呢 ?
给定下面SELECT语句的输出,如何将所有记录的"CameraLocationID"字段更新为"LocationID"字段中的值?
当前状态:
ItemID CameraID CameraLocationID LocationID
2 23038 NULL 335
3 23039 NULL 67
4 23040 NULL 34
5 23041 NULL 234
Run Code Online (Sandbox Code Playgroud)
期望的输出:
ItemID CameraID CameraLocationID LocationID
2 23038 335 335
3 23039 67 67
4 23040 34 34
5 23041 234 234
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
有一种SQL方法可以很快地完成这项工作吗?
编辑:对于未来的旅行者,CameraLocationID和LocationID在不同的表中.在应用UPDATE之前,SELECT将它们组合成一个输出.
我想查找所有以开头的表TB_,因此我编写了以下脚本:
select *
from INFORMATION_SCHEMA.TABLES
where TABLE_NAME like 'TB_%'
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,我得到了以下结果:
TB103_xxx
TB037_bbb
TB104_ccc
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么?
考虑从存储过程返回的以下结果集:
IHD列的目标是对前6行(天)进行计算,以确定存储过程中的IHD值。
在这种情况下,只有从第7行开始才有IHD值,因为计算需要考虑前6天的期末余额,包括当日(第7天)并计算平均值。基本上,它需要使用行1到7作为行的7 IHD值。然后,要计算第8行的IHD值,需要使用第2到8行。
我看过SQL LAG函数,但这只允许我跳到上一行,而且我不确定我是否能够LAG在需要CTE平均多个上一行的自引用中成功使用该函数。
我应该如何处理这种情况?