我正在嘗試將一些資料插入到特定表中。我創建了一個臨時表來創建一個標識列,該列可以用作我的插入陳述句的一部分。臨時表創建良好并且正在運行。我加入了其他幾個表來提取資料,但由于某種原因,它沒有產生任何結果。Select 陳述句也回傳零結果。我不確定如何處理這個問題,因為我對 sql 還是很陌生。
這是我到目前為止的查詢
create table #tmp1
([TImesheetID] [int] IDENTITY(1,1) not null,
PersonID varchar(10), Orderid varchar (10))
insert into #tmp1
select Tr.PersonId, TR.OrderId from temp_runupload TR
Left join Person_Identification PI on PI.PersonId=TR.PersonId
group by TR.PersonId, TR.OrderId
select * from #tmp1
declare @yearweek varchar(6) ='202245'
declare @runid varchar (2) ='86'
set @yearweek=202245
set @runid=80
`
insert into Timesheets (YearWeek, RunID, TimeSheetID, orderID, PersonID, PersonDetailRecord, TimeSheetType,
RegHours, OTHours, PayRate, BillRate, AmountField1, AmountField2, AmountField3, RateField1,RateField2, RateField3, PayCycle, CostField1, CostField2, InvoiceID, PersonWeek, Message,TSStatus, CompanyPO, ContactName, ApYearWeek, SeparateInvoice, CalledIn,TimeslipKey,SwipeTSDate,sICPBatchID, dCommissionPercent,DoNotMail,InvoiceMsg,ETransfer)
select distinct
@yearweek
,@RunID
,TimeSheetID = right('000' cast(t1.timesheetid as varchar(4)),4)
,Orderid=t1.OrderID
,Personid=t1.personid
,DetailRecId = max(OPDR.DetailRecId)
,OPS.[TimeSheetType]
,RegHours = TR.reghrs
,OTHours = TR.othrs
,PayRate=isnull(OPS.PayRate,0)
,BillRate = TR.BillRate
,0--[AmountField1]
,0--[AmountField2]
,0--[AmountField3]
,0--[RateField1]
,0--[RateField2]
,0--[RateField3]
,PAY.[PayCycle]
,0--[CostField1]
,0--[CostField2]
,null --[InvoiceId]
,@yearweek --[PersonWeek]
,null--[Message]
,'O'--[TSStatus]
,OH.[CompanyPO]
,null --contact name
-,@yearweek --[AppYearWeek]
,null -- [SeparateInvoice]
,'N' --[CalledIn]
,null --[TimeslipKey]
,null --[SwipeTSDate]
,null --[sICPBatchID]
,null --[dCommissionPercent]
,null --[DoNotMail]
,null --[InvoiceMsg]
,null
from temp_runupload TR
inner join Person_Identification PI on PI.PersonId=TR.PersonId
inner join #tmp1 T1 on PI.personid=T1.PersonID
inner join Order_Person_Detail_Record OPDR on OPDR.OrderId=TR.orderid
inner join payroll_information PAY on PAY.personid=TR.personid
inner join Order_Pay_Structure OPS on OPS.orderid=TR.OrderId and OPS.paystructurecounter=OPDR.paystructurecounter
inner join order_header OH on OH.orderid=OPDR.orderid
group by T1.timesheetid,T1.OrderId, T1.PersonId, ops.TimeSheetType,ops.PayRate, tr.BillRate, pay.PayCycle,
oh.DefaultCompanyPO, tr.reghrs, TR.OTHrs
uj5u.com熱心網友回復:
可能您在其中一張連接表中沒有受到打擊。
我除錯這些的方法是首先將所有 INNER JOIN 更改為 LEFT OUTER JOIN。然后,如果您仍然沒有命中,則查詢中的第一個表有很大問題。
如果命中,則將其逐個更改回 INNER JOIN,直到不再獲取行為止。這會告訴你哪張桌子沒有被擊中,你可以從哪里去。
另一種方法是使用“顯示查詢計劃”。箭頭將向您顯示哪些表包含零行
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533437.html
標籤:sql服务器
上一篇:在同一張表中獲取不同的地址
