将特定数据从一个 table 复制到另一个 sql
Copy specific data from one table to another in sql
我有两个 table,一个是 CurrentReport
,另一个是 Challan
table,另一个是当前报告 table,显示在table。我复制了 currentReport 以下列的值 table
[Title],
[ISBN],
[Author1],
[FinalStatus],
[MssType]
但现在我想将具有最小日期的 challan table 的 stepno 复制到两个 table 参考号中的 currentreport table 的 work1 中。是一样的。在 challan table 中,在 challan table 中有多个条目具有相同的参考号,其中我想获得具有最小日期的 stepno。
challan
table中的列是
[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
table中的列是:
[ReferenceNo]
,[Title]
,[ISBN]
,[Author1]
,[FinalStatus]
,[MssType]
,[Work1]
,[GivenTo1]
,[ChallanDate1]
,[ReceivedDate1]
,[Work2]
,[GivenTo2]
,[ChallanDate2]
,[ReceivedDate2]
,[Work3]
,[GivenTo3]
,[ChallanDate3]
,[ReceivedDate3]
,[Work4]
,[GivenTo4]
,[ChallanDate4]
,[ReceivedDate4]
所以请告诉我如何更新 currentreport
table 因为它有 200 个条目而 challan
table 有 700 个条目。
/* 检查这是否有效 */
第 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
我有两个 table,一个是 CurrentReport
,另一个是 Challan
table,另一个是当前报告 table,显示在table。我复制了 currentReport 以下列的值 table
[Title],
[ISBN],
[Author1],
[FinalStatus],
[MssType]
但现在我想将具有最小日期的 challan table 的 stepno 复制到两个 table 参考号中的 currentreport table 的 work1 中。是一样的。在 challan table 中,在 challan table 中有多个条目具有相同的参考号,其中我想获得具有最小日期的 stepno。
challan
table中的列是
[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
table中的列是:
[ReferenceNo]
,[Title]
,[ISBN]
,[Author1]
,[FinalStatus]
,[MssType]
,[Work1]
,[GivenTo1]
,[ChallanDate1]
,[ReceivedDate1]
,[Work2]
,[GivenTo2]
,[ChallanDate2]
,[ReceivedDate2]
,[Work3]
,[GivenTo3]
,[ChallanDate3]
,[ReceivedDate3]
,[Work4]
,[GivenTo4]
,[ChallanDate4]
,[ReceivedDate4]
所以请告诉我如何更新 currentreport
table 因为它有 200 个条目而 challan
table 有 700 个条目。
/* 检查这是否有效 */ 第 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