【发布时间】:2017-01-03 16:06:17
【问题描述】:
我需要合并 a ,如下所示,但我只想在表 dbo.Problem 在 IsValid 列中的值为 1 时执行此操作。 dbo.Problem 通过 dbo.Problem.ID = dbo.Delivery.IssueID 链接到 dbo.delivery。
merge [dbo].[Delivery] as D
using [ReportSvr].[Report].[dbo].[Delivery] as LinkD
on ( D.[ID] = LinkD.[ID])
WHEN NOT MATCHED BY TARGET
THEN INSERT(
[ID]
,[IssueID]
,[column2]
,[column3]
)
VALUES(
[ID]
,[IssueID]
,[column]
,[column]
);
GO
试过类似的东西;
select d.IssueID, i.IsValid
From Delivery d
left join (Select* From Issue where IsValid = 1) i
on d.IssueID = i.ID
因为第一步必须能够获得想要的行。
输出:
IssueID IsValid
1 1
2 NULL
6 NULL
7 1
8 1
9 1
10 NULL
如你所见,我非常失败......
我是 SQL 新手(第二天),如果这是一项我应该知道的简单任务,我很抱歉。
我希望你能帮助我。
【问题讨论】:
-
如果您不使用 MySQL,那么您应该删除该标签。
-
您在问题中使用/提到了不同的表格,然后是
Merge,然后是select statements?您真正在使用哪些表,以及您到底想做什么?[dbo].[Delivery],[ReportSvr].[Report].[dbo].[Delivery],dbo.Issue。还有dbo.Problem或dbo.Issue中的IsValid列在哪里 -
对不起,如果我没有说清楚。我必须合并两个表,如第一个片段所示,但我只想合并 [ReportSvr].[Report].[dbo].[Delivery] 中的行,其中 [ReportSvr].[Report 中的值 IsValid = 1 ].[dbo].[Issue] 这两个表通过 [Delivery].[IssueID] = [Issue].[ID] 链接。
标签: sql-server sql-server-2008 merge