在你说重复的问题之前请检查我的疑问,因为我有一些表,我试图从中获取报告。我在下面发布我的选择声明,
SELECT JobDetails.JobCode,JobDetails.ReceiptDate,JobDetails.DeliveryDate,JobDetails.CompletionDate,JobDetails.BranchName,RepairDetails.Repair_Remarks,JobDetails.FinalRemarks,
JobDetails.JobCommentCSR,JobDetails.BrandName, JobDetails.ModelName,JobDetails.IMEICode,JobDetails.SerialNo,CustomerDTL.CustomerName,CustomerDTL.MobileNumber,JobDetails.WarrantyType,
RepairDetails.Tech_Name,RepairDetails.Device_Condition,RepairDetails.Levels,
ItemMaster.ItemName,ItemMaster.ItemCode,PartsIssueDetails.SparePrice
From JobDetails
Right Join CustomerDTL On
JobDetails.JobCode=CustomerDTL.JobCode
Right Join RepairDetails On
JobDetails.JobCode=RepairDetails.JobCode
Right Join PartsIssueDetails On
JobDetails.JobCode=PartsIssueDetails.JobCode
Right Join ItemMaster On
PartsIssueDetails.ItemName=ItemMaster.ItemCode
Where
(JobDetails.CompletionDate Between @Date1 and @Date2) AND JobDetails.BrandName=@Brand
)
我的结果是
╔═══════════╦═════════════╦══════════════╦════════════════╦════════════╦════════════════════════════════════════════════════════╦═══════════════════════════════╦═══════════════════════════════════════════════════════════╦═══════════╦══════════════╦══════════╦══════════╦══════════════╦══════════════╦══════════════╦═════════════════════╦═════════════════════╦═════════════════════════════════════════════════════╦════════════════════════════════════╦══════════════════╦════════════╗
║ JobCode ║ ReceiptDate ║ DeliveryDate ║ CompletionDate ║ BranchName ║ Repair_Remarks ║ FinalRemarks ║ JobCommentCSR ║ BrandName ║ ModelName ║ IMEICode ║ SerialNo ║ CustomerName ║ MobileNumber ║ WarrantyType ║ Tech_Name ║ Device_Condition ║ Levels ║ ItemName ║ ItemCode ║ SparePrice ║
╠═══════════╬═════════════╬══════════════╬════════════════╬════════════╬════════════════════════════════════════════════════════╬═══════════════════════════════╬═══════════════════════════════════════════════════════════╬═══════════╬══════════════╬══════════╬══════════╬══════════════╬══════════════╬══════════════╬═════════════════════╬═════════════════════╬═════════════════════════════════════════════════════╬════════════════════════════════════╬══════════════════╬════════════╣
║ 201507501 ║ 15-Jul-15 ║ 30-Aug-15 ║ 23-Aug-15 ║ xxx ║ need replace lcd approved 75 ║ replace lcd approved 75 ║ Screen broken need full check up ║ xx ║ ST3-GO-77 ║ aaaa ║ aaa ║ 1111 ║ N ║ zzz ║ HW Part Discoloured ║ Level 2 ║ LCD ST3-GO-77 (Tab3-GO) ║ 26-05012-0003201 ║ 75 ║ ║
║ 201507501 ║ 15-Jul-15 ║ 30-Aug-15 ║ 23-Aug-15 ║ xxx ║ need replace lcd approved 75 ║ replace lcd approved 75 ║ Screen broken need full check up ║ xx ║ ST3-GO-77 ║ aaaa ║ aaa ║ 111 ║ N ║ zzz ║ HW Part Discoloured ║ Level 2 ║ Touch ST3-GO-77 (Tab3-GO) ║ 26-05012-0003201 ║ 0 ║ ║
║ 201508667 ║ 5-Aug-15 ║ 17-Aug-15 ║ 16-Aug-15 ║ xxx ║ NEED RE-ASSEMBLE AND SOFTWARE ║ RE-ASSEMBLE AND SOFTWARE ║ Unit not charging ║ xx ║ SSR2-1-50-5M ║ xxxxxxx ║ aaaa ║ bbb ║ 11111 ║ Y ║ aaa ║ HW Part Discoloured ║ Level 2 ║ Service Level 2 ║ Level L2 ║ 73.5 ║
║ 201508668 ║ 5-Aug-15 ║ 8-Aug-15 ║ 5-Aug-15 ║ xxx ║ NEED REPLACE RECIEVER AND SOFTWARE ║ REPLACE RECEIVER AND SOFTWARE ║ Calling problem,Sound Speaker not good need full check up ║ xxx ║ SSR1-5-8M ║ xxxxxxx ║ aaaa ║ ccc ║ 111 ║ Y ║ zzz ║ HW Part Dirty ║ Level 2 ║ RECEIVER 0.01W KINGSTATE SSR1-5-8M ║ 29S02-106B0-SH0S ║ 2.78 ║
║ 201508668 ║ 5-Aug-15 ║ 8-Aug-15 ║ 5-Aug-15 ║ xxx ║ NEED REPLACE RECIEVER AND SOFTWARE ║ REPLACE RECEIVER AND SOFTWARE ║ Calling problem,Sound Speaker not good need full check up ║ xx ║ SSR1-5-8M ║ xxxxxxx ║ aaaa ║ ccc ║ 111 ║ Y ║ zzz ║ HW Part Dirty ║ Level 2 ║ Service Level 2 ║ SICO L2 ║ 73.5 ║
║ 201508671 ║ 5-Aug-15 ║ 23-Aug-15 ║ 9-Aug-15 ║ xxx ║ NEED REPLACE LCD APPROVED 185 REPLACE LCD Approved 185 ║ Lcd Broken need full check up ║ xx ║ SSR1-5-8M ║ xxxxxxx ║ aaaa ║ Madu ║ 111 ║ N ║ zzz ║ HW Part Discoloured ║ Level 2 ║ 5" TOUCH PANEL AND LCM MODULE (LAMINATED) SSR1-5-8M ║ 29C10-052A0-L00R ║ 185 ║ ║
╚═══════════╩═════════════╩══════════════╩════════════════╩════════════╩════════════════════════════════════════════════════════╩═══════════════════════════════╩═══════════════════════════════════════════════════════════╩═══════════╩══════════════╩══════════╩══════════╩══════════════╩══════════════╩══════════════╩═════════════════════╩═════════════════════╩═════════════════════════════════════════════════════╩════════════════════════════════════╩══════════════════╩════════════╝
由于零件的原因,您可以多次看到这份工作代码。我如何得到如下结果。
╔═══════════╦═════════════╦══════════════╦════════════════╦════════════╦════════════════════════════════════╦═══════════════════════════════╦═══════════════════════════════════════════════════════════╦═══════════╦══════════════╦══════════╦══════════╦══════════════╦══════════════╦══════════════╦═════════════════════╦═════════════════════╦═════════════════════════╦═════════════════════════════════════════════════════╦══════════════════╦═══════════════════════════╦═════════════════════════════════════════════════════╦══════════════════╦════════════╗
║ JobCode ║ ReceiptDate ║ DeliveryDate ║ CompletionDate ║ BranchName ║ Repair_Remarks ║ FinalRemarks ║ JobCommentCSR ║ BrandName ║ ModelName ║ IMEICode ║ SerialNo ║ CustomerName ║ MobileNumber ║ WarrantyType ║ Tech_Name ║ Device_Condition ║ Levels ║ ItemName ║ ItemCode ║ SparePrice ║ ItemName ║ ItemCode ║ SparePrice ║
╠═══════════╬═════════════╬══════════════╬════════════════╬════════════╬════════════════════════════════════╬═══════════════════════════════╬═══════════════════════════════════════════════════════════╬═══════════╬══════════════╬══════════╬══════════╬══════════════╬══════════════╬══════════════╬═════════════════════╬═════════════════════╬═════════════════════════╬═════════════════════════════════════════════════════╬══════════════════╬═══════════════════════════╬═════════════════════════════════════════════════════╬══════════════════╬════════════╣
║ 201507501 ║ 15-Jul-15 ║ 30-Aug-15 ║ 23-Aug-15 ║ xxx ║ need replace lcd approved 75 ║ replace lcd approved 75 ║ Screen broken need full check up ║ xx ║ ST3-GO-77 ║ aaaa ║ aaa ║ 1111 ║ N ║ zzz ║ HW Part Discoloured ║ Level 2 ║ LCD ST3-GO-77 (Tab3-GO) ║ 26-05012-0003201 ║ 75 ║ Touch ST3-GO-77 (Tab3-GO) ║ 26-05012-0003201 ║ 0 ║ ║
║ 201508667 ║ 5-Aug-15 ║ 17-Aug-15 ║ 16-Aug-15 ║ xxx ║ NEED RE-ASSEMBLE AND SOFTWARE ║ RE-ASSEMBLE AND SOFTWARE ║ Unit not charging ║ xx ║ SSR2-1-50-5M ║ xxxxxxx ║ aaaa ║ bbb ║ 11111 ║ Y ║ aaa ║ HW Part Discoloured ║ Level 2 ║ Service Level 2 ║ Level L2 ║ 73.5 ║ ║ ║ ║
║ 201508668 ║ 5-Aug-15 ║ 8-Aug-15 ║ 5-Aug-15 ║ xxx ║ NEED REPLACE RECIEVER AND SOFTWARE ║ REPLACE RECEIVER AND SOFTWARE ║ Calling problem,Sound Speaker not good need full check up ║ xxx ║ SSR1-5-8M ║ xxxxxxx ║ aaaa ║ ccc ║ 111 ║ Y ║ zzz ║ HW Part Dirty ║ Level 2 ║ RECEIVER 0.01W KINGSTATE SSR1-5-8M ║ 29S02-106B0-SH0S ║ 2.78 ║ Service Level 2 ║ Level L2 ║ 73.5 ║
║ 201508671 ║ 5-Aug-15 ║ 23-Aug-15 ║ 9-Aug-15 ║ xxx ║ NEED REPLACE LCD APPROVED 185 AED ║ REPLACE LCD Approved 185 ║ Lcd Broken need full check up ║ xx ║ SSR1-5-8M ║ xxxxxxx ║ aaaa ║ Madu ║ 111 ║ N ║ zzz ║ HW Part Discoloured ║ Level 2 ║ 5" TOUCH PANEL AND LCM MODULE (LAMINATED) SSR1-5-8M ║ 29C10-052A0-L00R ║ 185 ║ 5" TOUCH PANEL AND LCM MODULE (LAMINATED) SSR1-5-8M ║ 29C10-052A0-L00R ║ 185 ║
╚═══════════╩═════════════╩══════════════╩════════════════╩════════════╩════════════════════════════════════╩═══════════════════════════════╩═══════════════════════════════════════════════════════════╩═══════════╩══════════════╩══════════╩══════════╩══════════════╩══════════════╩══════════════╩═════════════════════╩═════════════════════╩═════════════════════════╩═════════════════════════════════════════════════════╩══════════════════╩═══════════════════════════╩═════════════════════════════════════════════════════╩══════════════════╩════════════╝
帮我解决这个问题......这项工作的最大部分是4.
答案 0 :(得分:0)
您可能需要从PartsIssueDetails和ItemMaster创建一个CTE或派生表,为每个JobCode返回一行。您可以使用case语句和row_number更容易地进行数据透视,具体如下:
select
PID.JobCode,
max(case when RN = 1 then IM.ItemName end) as ItemName1,
max(case when RN = 1 then IM.ItemCode end) as ItemCode1,
max(case when RN = 1 then PID.SparePrice end) as SparePrice1,
max(case when RN = 2 then IM.ItemName end) as ItemName2,
max(case when RN = 2 then IM.ItemCode end) as ItemCode2,
max(case when RN = 2 then PID.SparePrice end) as SparePrice2,
...
from (
select
PID.JobCode,
IM.ItemName,
IM.ItemCode,
PID.SparePrice,
row_number() over (partition by PID.JobCode order by IM.ItemName) as RN
from
PartsIssueDetails PID
left outer join ItemMaster IM On PID.ItemName=IM.ItemCode
) X
group by PID.JobCode
这只是猜测,因为您没有提供任何示例数据或表结构。
我还假设您需要使用左外连接而不是右连接,这对我来说更有意义。