【发布时间】:2017-01-02 00:37:49
【问题描述】:
我必须写一个。 insert 语句查看表并在满足条件时插入记录。这是一次性的,所以不要过分担心它的效率。
该表包含项目的工作分解结构(每个项目具有项目级别(wbs1)、阶段级别(wbs2)和任务级别(wbs3)
那张桌子是这样的
Wbs1 wbs2 wbs3 name
262 ProjectA
262 01 Data Analsys
262 01 01 Data cleansing
262 01 02 Data Transforming
我需要使用插入语句向每个项目(WBS1)插入一个阶段(WBS2),例如向每个项目(wbs1)添加一个 wbs2“02”。
编写插入语句没有问题,我从项目级别选择数据,因为其中大部分是多余的,所以没有问题,我只是不确定如何让它循环并将阶段添加到每个项目,因为有是具有相同项目(wbs1)编号的多行
插入语句示例
Insert into dbo.pr ([WBS1],[WBS2],[WBS3],[Name])
(Select [WBS1],'999',[WBS3],'In-House Expenses'
from dbo.pr where wbs1 = @ProjectID
and wbs2 ='')
如何运行此语句以在每个项目中插入一行?(wbs1)
希望这是有道理的。
【问题讨论】:
-
insert 本身不能成为有条件的。它没有 where 子句。但你正在做的将是要走的路。从选择结果中插入,您可以根据条件进行选择。
-
这是一个 MS SQL 2014 数据库。
-
如果要为某个项目插入记录,请删除第二个
WHERE条件。Insert into dbo.pr ([WBS1],[WBS2],[WBS3],[Name]) (Select [WBS1],'999',[WBS3],'In-House Expenses' from dbo.pr where wbs1 = @ProjectID)应该为特定项目@ProjectID 插入行。 -
我不确定我是否清楚地理解了您的问题,但只要您的插入语句示例为该特定 wbs1 记录执行您想要的操作,如果您只是删除它,它也将适用于其余 wbs1 值“其中 wbs1 = @ProjectID”条件。
-
如何知道为每个 wbs1 值添加一条记录?也许我在这里遗漏了一些非常简单的东西......我假设它必须选择每个 wbs1 并为每个值重新运行一次插入语句,就像一个循环。
标签: sql sql-server tsql sql-server-2014