【问题标题】:Copy specific data from one table to another in sql在sql中将特定数据从一个表复制到另一个表
【发布时间】:2015-04-28 07:28:16
【问题描述】:

我有两个表,一个是CurrentReport,另一个是Challan 表,另一个是表中显示的当前报告表。我复制 currentReport 表的以下列的值

 [Title],
    [ISBN],
    [Author1],
    [FinalStatus],
    [MssType] 

但现在我想将具有最小日期的 challan 表的 stepno 复制到两个表中的 currentreport 表的 work1 中。是一样的。在 challan 表中,challan 表中有多个条目具有相同的参考编号,其中我想获得具有最小日期的 stepno。

challan 表中的列是

       [ChallanNo]
      ,[ReferenceNo]
      ,[PersonID]
      ,[PersonCategory]
      ,[ChallanDate]
      ,[PreparedBy]
      ,[CreatedOn]
      ,[Publisher]
      ,[TemplateName]
      ,[TemplateSubject]
      ,[TemplateBody]
      ,[EmailAttachment]
      ,[PreviousProjectedDate]
      ,[PreviousReminderDate]
      ,[PreviousActionDate]
      ,[NextProjectedDate]
      ,[NextReminderDate]
      ,[NextActionDate]
      ,[ReminderText]
      ,[ReceivedDate]
      ,[StepNo]
      ,[ChallanStatus]
      ,[IsActive]
      ,[IsReceived] 

CurrentReport 表中的列是:

 [ReferenceNo]
          ,[Title]
          ,[ISBN]
          ,[Author1]
          ,[FinalStatus]
          ,[MssType]
          ,[Work1]
          ,[GivenTo1]
          ,[ChallanDate1]
          ,[ReceivedDate1]
          ,[Work2]
          ,[GivenTo2]
          ,[ChallanDate2]
          ,[ReceivedDate2]
          ,[Work3]
          ,[GivenTo3]
          ,[ChallanDate3]
          ,[ReceivedDate3]
          ,[Work4]
          ,[GivenTo4]
          ,[ChallanDate4]
          ,[ReceivedDate4]

所以请告诉我如何更新 currentreport 表,因为它有 200 个条目,challan 表有 700 个条目。

【问题讨论】:

  • 你能展示一下你的尝试吗?
  • update CurrentReport set Work1=ch.StepNo from CurrentReport inner join Challan ch on ch.ReferenceNo=CurrentReport.ReferenceNo
  • 但这不会为您提供最小日期步骤号。将您的问题分成多个部分 - 1) 编写一个选择以从 Challan 表中过滤出最小日期步骤号。 2) 使用此选择更新条目。先自己尝试,然后寻求更多帮助
  • 但是如何请给出任何想法??
  • 您使用的供应商是什么?我将发布 SQL Server 的答案

标签: sql sql-update nested inner-join


【解决方案1】:

/* 检查这是否有效 */ 第 1 步 - 编写 select 以过滤掉 minDate -

SELECT c.ChallanNo, c.REFERENCENO , c.STEPNO FROM CHALLAN c
INNER JOIN CURRENTREPORT cr
on c.REFERENCENO = cr.REFERENCENO
WHERE RECEIVEDDATE IN (SELECT MIN(RECEIVEDDATE)
FROM CHALLAN cn
GROUP BY (STEPNO))

/* 如果上述方法有效 */ 第 2 步 - 根据上述结果进行更新

WITH CTE AS (
SELECT c.ChallanNo, c.REFERENCENO , c.STEPNO FROM CHALLAN c
INNER JOIN CURRENTREPORT cr
on c.REFERENCENO = cr.REFERENCENO
WHERE RECEIVEDDATE IN (SELECT MIN(RECEIVEDDATE)
FROM CHALLAN cn
GROUP BY (STEPNO))
)

UPDATE CURRENTREPORT SET WORK1 = ch.STEPNO FROM CURRENTREPORT c INNER JOIN cte ch 
on c.referenceNo = ch.referenceNo

【讨论】:

  • 如果您遇到问题,请告诉我!
猜你喜欢
  • 2012-01-06
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多