我试图找出具有相同 ID 的两行之间的时间差(以秒为单位)。
这是一个简单的表格。
该表按myid和排序timestamp。我试图获取具有相同 . 的两行之间的总秒数myid。
这就是我的想法。此查询的唯一问题是它计算所有记录的时间差,但不计算相同 ID 的时间差。
SELECT DATEDIFF(second, pTimeStamp, TimeStamp), q.*
FROM (
SELECT *,
LAG(TimeStamp) OVER (ORDER BY TimeStamp) pTimeStamp
FROM data
) q
WHERE pTimeStamp IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
这是输出。
我只希望输出以黄色突出显示。
有什么建议么?
供应商要求我将 SQL ServerDateTime值转换为以下特定时间戳格式%Y-%m-%d %H:%M:%OS4 %z。该查询将被放入他们的软件中以查询我的数据库。
所需的输出似乎可能与R 中的posixct 问题模糊相关;但这是关于 SQL Server 中的输出。除了该字段在他们的软件中显示为空白之外,我没有收到任何具体错误,但它在我的 SQL 界面中有效。
我从 SQL 得到的输出如下:
2016-03-16 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
像这样的另一列的输出没有问题varchar(30),2016-03-16 11:34:36因为它只是在映射到字符串字段时将其视为字符串......但要使其处理它需要采用引用的%Y-%m-%d %H:%M:%OS4 %z格式。
除了数据类型之外,这些差异似乎很微妙,但即使映射到字符串字段,它也无法将 SQL 本机输出映射到其字段中。
我已经尝试过例如
cast(convert(datetime, tn.last_settled, 126) as Varchar(30))
Run Code Online (Sandbox Code Playgroud)
但datetime结果Jan 1 1990 12:00AM不是所需的格式。
如何将所需的字符串2016-03-16 11:34:36和日期时间格式从 T-SQL 中的 SQL Server格式2016-03-16 00:00:00.000转换为所需的格式?%Y-%m-%d %H:%M:%OS4 %zdatetime
请先阅读问题,然后再将其标记为重复项。
我正在尝试将一行插入到 5 列的表中。我希望其中 3 列来自另一个表,我将使用选择查询来读取该表。
INSERT INTO tbl.Log (
LogDate,
Object,
Count,
Creator,
LastUpdate)
SELECT TOP 1
GETUTCDATE(),
Object,
Count, -- I need to +1 to this
'John Smith',
LastUpdate
FROM tbl.Objects
WHERE ObjectID = '123'
ORDER BY LastUpdate DESC
Run Code Online (Sandbox Code Playgroud)
我可以在这里看到我做错了什么:
GETUTCDATE()不应出现在 SELECT 中,因为它不是列名。它去哪里了呢?'John Smith'作为创造者也是如此我可以通过执行两个单独的查询并将数据解析到SELECT查询中来手动完成此操作INSERT,但我正在尝试改进我的 SQL。
我正在尝试以混合模式安装 SQL Server 2012,我需要提供一个简单的sa登录密码,但根据密码策略,它需要很强。有没有办法提供一个简单的密码。我可以在安装 SQL Server 2012 时删除强制密码策略吗?
我有这个表数据:
我想执行一个 SQL 查询,该查询将给出每个城市不同贷款申请的总数。
例如,我期望这个输出
City Wexford
Loans 1
City Waterford 1
Loans 1
City Galway
Loans 3
Run Code Online (Sandbox Code Playgroud)
知道我需要执行什么样的查询才能获取每个城市的不同贷款计数吗?
<p>如何使用正则表达式获取html 标签之间的字符串</p>?
\'<div class="ExternalClass849E0BFE74914F8BB79B2C64E3D07AE6"><p>\xe2\x80\x8bJust help me!</p></div>\'\nRun Code Online (Sandbox Code Playgroud)\n\n此致,\n埃利奥·费尔南德斯
\n我正在尝试更新存储过程以便能够比较不区分重音的数据。当前存储过程使用 Containstable 进行全文搜索,但比较是重音敏感的。是否有机会为包含表设置排序规则(例如Latin1_General_CI_AI)?
db 的排序规则区分重音。
我正在使用 MS SQL Server 2012 Express。
我有这样的表:
表A:
customerId mobNo1 mobNo2 mobNo3
-----------------------------------------
123 999 997 987
124 888 666 555
Run Code Online (Sandbox Code Playgroud)
表B:
customerId mobNumbers
-------------------------
123 999
123 997
123 987
124 888
124 666
124 555
Run Code Online (Sandbox Code Playgroud)
我需要编写一条MERGE语句,以便将表 A 中的数据更新或插入到表 B 中
这是我尝试过的:
MERGE tableB tgt
USING (SELECT * FROM tableA) src ON src.customerId = tgt.customerId
WHEN MATCHED THEN
UPDATE
SET mobNumbers = src.mobNo1,
mobNumbers = src.mobNo2,
mobNumbers = src.mobNo3,
WHEN NOT MATCHED THEN
INSERT (customerID, mobileNumbers)
VALUES (src.customerID, src.mobNo1),
(src.customerID, src.mobNo2),
(src.customerID, src.mobNo3); …Run Code Online (Sandbox Code Playgroud) 我有一个关于 SQL Server 的问题:如何使用几列获取 json 格式并获取列?
表:雇员
id | name | sal | depno
----+------+-----+------
1 | a | 100 | 10
2 | b | 200 | 20
Run Code Online (Sandbox Code Playgroud)
根据这些数据,我想要这样的输出:
id | name | sal | deptno | empjsonstring
----+------+------+--------+-------------------------------------------
1 | a | 100 | 10 | {"id":1,"name":"a","sal":100,"deptno":10}
2 | b | 200 | 20 | {"id":2,"name":"b","sal"200,"deptno":20}
Run Code Online (Sandbox Code Playgroud)
我尝试过这个查询:
select *
from emp
for json path, include_null_values, without_array_wrapper
Run Code Online (Sandbox Code Playgroud)
但这并没有返回预期的结果。
您能告诉我如何在 SQL Server 中编写查询来完成此任务吗?
SQL Server中有3个数据量很大的表,每个表包含大约100000行。有一个 SQL 从三个表中获取行。它的性能非常糟糕。
WITH t1 AS
(
SELECT
LeadId, dbo.get_item_id(Log) AS ItemId, DateCreated AS PriceDate
FROM
(SELECT
t.ID, t.LeadID, t.Log, t.DateCreated, f.AskingPrice
FROM
t
JOIN
f ON f.PKID = t.LeadID
WHERE
t.Log LIKE '%xxx%') temp
)
SELECT COUNT(1)
FROM t1
JOIN s ON s.ItemID = t1.ItemId
Run Code Online (Sandbox Code Playgroud)
在检查其估计执行计划时,我发现它使用了大行的嵌套循环连接。抢劫看下面的截图。图像中的顶部部分返回 124277 行,底部部分执行了 124277 次!我想这就是它这么慢的原因。
我们知道嵌套循环在处理大数据时存在很大的性能问题。如何删除它,并使用散列连接或其他连接代替?
编辑:以下是相关功能。
CREATE FUNCTION [dbo].[get_item_Id](@message VARCHAR(200))
RETURNS VARCHAR(200) AS
BEGIN
DECLARE @result VARCHAR(200),
@index int
--Sold in eBay (372827580038).
SELECT @index = PatIndex('%([0-9]%)%', @message)
IF(@index = …Run Code Online (Sandbox Code Playgroud) sql sql-server nested-loops database-performance sql-server-2012
sql-server-2012 ×10
sql-server ×6
t-sql ×5
sql ×4
datetime ×1
json ×1
merge ×1
nested-loops ×1
ssms ×1