저장된 proc에서 계산 된 필드를 만들려고합니다. 나는 projectID
열과 영향을받는 영역에 해당하는 '예'또는 '아니오'값이있는 3 개의 열이 있습니다. 모든 '예'값을 수집하고 해당 지역의 이름을 RegionImpacted
이라는 새 필드에 삽입해야합니다. 여러 지역에 영향을 줄 수 있습니다.다른 3 개의 필드에서 계산 된 필드 T-SQL
0
A
답변
0
중첩 된 경우 문이 작동 제안하지만 당신은 기하 급수적으로 그 복잡성이 증가하기 때문에 추가 지역을 추가해야하는 경우 그들은 매우 빠르게 매우 복잡하게된다. 중첩 된 case 문 솔루션을 구현하기 전에 예를 들어 6 개 영역으로 무엇을 보일지 생각해보십시오. 나는 연결된 case 문 접근법을 선호한다.
DECLARE @Region1 CHAR(3)
, @Region2 CHAR(3)
, @Region3 CHAR(3)
, @Result VARCHAR(128)
SET @Region1 = ' NO'
SET @Region2 = ' NO'
SET @Region3 = ' NO'
SELECT Regions = CASE WHEN (@Region1 = ' NO'
AND @Region2 = ' NO'
AND @Region3 = ' NO'
) THEN 'None'
ELSE CASE @Region1
WHEN 'YES' THEN 'Region1 '
ELSE ''
END
+ CASE @Region2
WHEN 'YES' THEN 'Region2 '
ELSE ''
END
+ CASE @Region3
WHEN 'YES' THEN 'Region3 '
ELSE ''
END
END
0
다음과 같이 소리가납니다. 열에 서식을 지정하고 표시 할 항목을 지정해야합니다. 등의
case when [apac]='YES' then
case when [latam]='YES' then
case when [emea]='YES' then 'A/L/E'
else 'A/L' end
else
case when [emea]='YES' then 'A/E'
else 'A' end
end
else
case when [latam]='YES' then
case when [emea]='YES' then 'L/E'
else 'L' end
else
case when [emea]='YES' then 'E'
else 'NONE' end
end
end
0
내가 제대로 당신을 이해한다면
declare @T table (ID int, APAC varchar(3), LATAM varchar(3), EMEA varchar(3))
insert into @T values
(1, 'No', 'No', 'No'),
(2, 'Yes', 'No', 'No'),
(3, 'No', 'Yes', 'Yes'),
(4, 'Yes', 'Yes', 'Yes')
select
ID,
APAC,
LATAM,
EMEA,
coalesce(stuff(
case when APAC = 'Yes' then ',APAC' else '' end +
case when LATAM = 'Yes' then ',LATAM' else '' end +
case when EMEA = 'Yes' then ',EMEA' else '' end,
1, 1, ''), 'none') as RegionNames
from @T
결과
ID APAC LATAM EMEA RegionNames
----------- ---- ----- ---- ----------------
1 No No No none
2 Yes No No APAC
3 No Yes Yes LATAM,EMEA
4 Yes Yes Yes APAC,LATAM,EMEA
+0
표시 할 수있는 방법이 있습니까? "none"이라면 모든 지역에 No .. – Avinash
+0
@Avinash 예. 업데이트 된 답변. –
당신이 여러 영역이 영향을받는 때 하나의 컬럼에 삽입 할 것인가? –
당신이 지금까지 가지고있는 것을 말해주십시오. 두개의 테이블과 컬럼이 좋을 것입니다. – DefyGravity
지역은 APAC, LATAM 및 EMEA입니다. 예를 사용하여 열 이름을 새 필드로 가져와야합니다. Projects라는 테이블 ... 프로젝트 ID가 4 열이며 예 또는 아니요가있는이 세 개의 영역이 있습니다. 예를 들어 영역의 이름이있는 네 번째 필드를 만들어야합니다. – Avinash