일부 정보를 수집하기 위해 쿼리 작업을하고 있으며 약간의 문제가 있습니다.GROUP BY에 포함하지 않고 CASE 문에 무언가를 넣는 방법
본인의 쿼리에서 CASE 문을 사용하여 측정 단위를 살펴보고 단위가 하나인지 다른지 여부에 따라 계산합니다.
내 문제는 내가 특정 레코드를보고있을 때, 단지 1로만 표시하고 싶을 때 2 레코드로 표시하지만 둘 다에서 수치를 합치는 것입니다.
불행하게도 2 개의 레코드가 표시되는 이유는 내가 유닛에 그룹을 가져야하기 때문입니다. 그리고 그들은 서로 다르기 때문에 2 라인 이상으로 나뉘어져 있습니다.
내 질문은 이것이다 :
Select
C.CaseID,
DATEPART(Year,C.ResolvedDate) 'Year',
DATENAME(Month,C.ResolvedDate) 'Month',
CASE
WHEN
I.ItemGroupID IN ('FGBCTFLR','FGBCTFLD','FGBCTLIS','FGBCTSAM','FGBCTSEC') THEN 'ManufacturedCeramics'
WHEN
I.ItemGroupID = 'FGBCTGLS' THEN 'ManufacturedGlass'
WHEN
I.ItemGroupID IN ('FGFACTAG','FGFACTFLD','FGFACTFLR','FGFACTLIS','FGTOOLS') THEN 'Factored'
End as 'Category',
COALESCE(CASE WHEN D.UnitID = 'BOX' THEN
SUM(D.QtyAffected * I.BCT_Product_Qty/(1/NULLIF((convert(decimal(18,3),I.BCT_Product_Width)/1000 * convert(decimal(18,3),I.BCT_Product_Height)/1000),0)))
ELSE
SUM(D.QtyAffected/(1/NULLIF((convert(decimal(18,3),I.BCT_Product_Width)/1000 * convert(decimal(18,3),I.BCT_Product_Height)/1000),0)))
End,0) as 'M2 Affected',
C.CostReplacementTile + C.CostRedelivery + C.CostCredit + C.CostRefixing + C.CostVoucher 'Cost'
From BCTComplaintRegister C
Left Join BCTComplaintProductRegister D
On D.CaseID = C.CaseID
Left Join InventTable I
On I.ItemID = D.ItemID
Left Join BCTTileSize T
On T.TileSizeID = I.BCTTileSize
Where
DATEDIFF(M,C.ResolvedDate,GETDATE()) <= 12
And C.QAOutcome IN (1,2,5)
And C.Status = '4'
AND C.CaseID = 'CE20300'
Group By
DATEPART(Year,C.ResolvedDate),
DATENAME(Month,C.ResolvedDate),
I.ItemGroupID,
C.CaseID,
C.CostReplacementTile,
c.costredelivery,
c.costcredit,
c.costrefixing,
c.costvoucher,
d.unitid
Order By
C.CaseId
결과는 다음과 같습니다 :
CaseID: CE20300, CE20300 <br>
Year: 2016, 2016<br>
Month: April, April<br>
Category: ManCer, ManCer<br>
M2 Affected: 23.56, 0.81
Cost: 2292, 2292
(죄송합니다 여기에 테이블을 할 방법을 잘하지 않음). 한 줄로 표시하려면이 값이 필요하지만 두 값의 합계가 M2 인 경우 비용은 동일하게 유지되어야합니다.
어떻게하면됩니까?
불명의 점이 있으면 죄송합니다.
대소 문자를 구분하지 않고 대소 문자를 구별하는 표현식입니다 (값을 반환). – jarlh
확인. 죄송합니다 ...... – Barnold
사례 표현의 _result_를 기준으로 그룹화한다고 가정합니다. GROUP BY에 전체 CASE 문을 포함 시키거나 하위 쿼리를 사용하여 외부 쿼리에서 범주와 그룹을 매핑해야합니다. –