急求解决方法
小弟初学,现写了一条语句用来查询:
Select a.BulkCode,a.BulkBatchNo,'' as LotNo,a.ProcessingDate,a.InspectionNo,
b.PH_Result,
b.Viso_Result
From TBKInspectionHeader a Left outer Join
(
select a.Inspectionno,a.PH_Result,b.Viso_Result
from
(Select InspectionNo,Result as PH_Result
From TBKInspectionLines
Where Parameter like 'Viscosity%') a
inner join
(Select InspectionNo,Result as Viso_Result
From TBKInspectionLines
Where Parameter like 'Viscosity%' ) b
on a.InspectionNo=b.InspectionNo
where (a.PH_Result is not null or b.Viso_Result is not Null)
and a.InspectionNo = 'BK20120203001'
)b on a.InspectionNo=b.InspectionNo
Where a.Status=1
And a.BulkCode = '766735/70'
and a.BulkBatchNo = 'B2012020017'
查询结果如下:
766735/70 B2012020017 2012-02-03 00:00:00.000 BK20120203001 38.000000 38.000000
766735/70 B2012020017 2012-02-03 00:00:00.000 BK20120203001 38.000000 35.000000
766735/70 B2012020017 2012-02-03 00:00:00.000 BK20120203001 35.000000 38.000000
766735/70 B2012020017 2012-02-03 00:00:00.000 BK20120203001 35.000000 35.000000
很明显重复了,然后又试着改了语句,如下:
Select a.BulkCode,a.BulkBatchNo,'' as LOrealLotNo,a.ProcessingDate as PackingDay,a.InspectionNo,b.Result as PH_Result,c.Result as Viso_Result
From TBKInspectionHeader a
Left outer Join
( Select InspectionNo,Result
From TBKInspectionLines
Where Parameter like 'PH%'
) b on a.InspectionNo=b.InspectionNo
Left Outer Join
(
Select InspectionNo,Result
From TBKInspectionLines
Where Parameter like 'Viscosity%'
)c on a.InspectionNo=c.InspectionNo
Where a.Status='1'
And (b.Result is not null or c.Result is not Null)
查询结果还是重复了:
查询结果如下:
766735/70 B2012020017 2012-02-03 00:00:00.000 BK20120203001 38.000000 38.000000
766735/70 B2012020017 2012-02-03 00:00:00.000 BK20120203001 38.000000 35.000000
766735/70 B2012020017 2012-02-03 00:00:00.000 BK20120203001 35.000000 38.000000
766735/70 B2012020017 2012-02-03 00:00:00.000 BK20120203001 35.000000 35.000000
请问有什么好的方法来避免重复吗?
------解决方案--------------------
SQL code
Select DISTINCT a.BulkCode,a.BulkBatchNo,'' as LOrealLotNo,a.ProcessingDate as PackingDay,a.InspectionNo,
b.Result as PH_Result,c.Result as Viso_Result,b.Parameter as PH_Parameter,c.Parameter as Viso_Parameter
From TBKInspectionHeader a
Left outer Join
( Select InspectionNo,Result,Parameter
From TBKInspectionLines
Where Parameter like 'PH%'
) b on a.InspectionNo=b.InspectionNo
Left Outer Join
(
Select InspectionNo,Result,Parameter
From TBKInspectionLines
Where Parameter like 'Viscosity%'
)c on a.InspectionNo=c.InspectionNo
Where a.Status='1'
And (b.Result is not null or c.Result is not Null)
And a.BulkCode = '766735/70'
and a.BulkBatchNo = 'B2012020017'
[color=#FF0000]and RIGHT(b.Parameter,LEN(b.Parameter) - CHARINDEX('-',b.Parameter)) =RIGHT(c.Parameter,LEN(c.Parameter) - CHARINDEX('-',c.Parameter))[/color]