尝试运行更新,但我想逐步完成它,因为它的数据量很大,不想一次将其全部炸毁。
在 oracle 中,选择我想要的行要容易一些,因为你可以将它包含在WHERE
子句中,但 T-SQL 你将它包含在select
. 我想按照以下方式写一些东西:
Update Instances
set thing = 'new thing'
Where rownum<500
基本上一次想做500个,这个语法在TSQL中可行吗?
尝试运行更新,但我想逐步完成它,因为它的数据量很大,不想一次将其全部炸毁。
在 oracle 中,选择我想要的行要容易一些,因为你可以将它包含在WHERE
子句中,但 T-SQL 你将它包含在select
. 我想按照以下方式写一些东西:
Update Instances
set thing = 'new thing'
Where rownum<500
基本上一次想做500个,这个语法在TSQL中可行吗?
我有一些这种格式的数据:
52-681-Functional-EHT
53-682-Functional-EGT
52-683-Functional-EZT
51-684-Functional-EYT
59-685-Functional-E5T
我想用 sql 语句永久删除内部的“-Functional” ,这样我的记录现在看起来像......
52-681-EHT
53-682-EGT
52-683-EZT
51-684-EYT
59-685-E5T
我所有的研究都让我想到了,Replace
但这似乎只是一个问题select
,而且还不能完全弄清楚如何将其形成一个合适的update
陈述。同样,我想删除字符串FOREVER。
创建脚本:
create table part (
id int identity(1,1) PRIMARY KEY,
Partname nvarchar(50))
insert into Part (Partname)
values ('52-681-Functional-EHT'),
('53-682-Functional-EGT'),
('52-683-Functional-EZT'),
('51-684-Functional-EYT'),
('59-685-Functional-E5T')
我的客户想知道所有在夜间登录系统的人。我保留所有登录时间。基本上是在寻找今年全年从凌晨 1 点到 5 点登录的任何人。有没有办法使用 SQL 找到它?
我使用 24 小时制以基本日期时间格式保存我的时间。
这是我想使用递归T-SQL
查询(大概CTE
)搜索的程序集树,预期结果如下。我想知道给定任何零件的每个组件的总量。
这意味着如果我搜索“铆钉”,我想知道程序集中每个级别的总计数,而不仅仅是直接子级计数。
Assembly (id:1)
|
|-Rivet
|-Rivet
|-SubAssembly (id:2)
| |
| |-Rivet
| |-Bolt
| |-Bolt
| |-SubSubAssembly (id:3)
| |
| |-Rivet
| |-Rivet
|
|-SubAssembly (id:4)
|-Rivet
|-Bolt
DESIRED Results
-------
ID, Count
1 , 6
2 , 3
3 , 2
4 , 1
目前,我可以获得直接父母,但想知道如何扩展我的 CTE 以允许我向上滚动此信息。
With DirectParents AS(
--initialization
Select InstanceID, ParentID
From Instances i
Where i.Part = 'Rivet'
UNION ALL
--recursive execution
Select i.InstanceID, i.ParentID
From PartInstances i INNER JOIN DirectParents p
on i.ParentID = p.InstanceID
)
select ParentID, Count(instanceid) as Totals
from DirectParents
group by InstanceID, ParentID
Results
-------
ID, Count
1 , 2
2 , 2
3 , 2
4 , 1
创建脚本
CREATE TABLE [dbo].[Instances] (
[InstanceID] NVARCHAR (50) NOT NULL,
[Part] NVARCHAR (50) NOT NULL,
[ParentID] NVARCHAR (50) NOT NULL, );
INSERT INTO Instances
Values
(1, 'Assembly', 0),
(50, 'Rivet', 1),
(50, 'Rivet', 1),
(2, 'SubAssembly', 1),
(50, 'Rivet', 2),
(51, 'Bolt', 2),
(51, 'Bolt', 2),
(3, 'SubSubAssembly', 2),
(50, 'Rivet', 3),
(50, 'Rivet', 3),
(4, 'SubAssembly2', 1),
(50, 'Rivet', 4),
(51, 'Bolt', 4)