테이블 A에 일자별 칼럼(A01, A02, A03.... A31)이 있습니다.
해당 칼럼에 특정값이 있는 경우의 필드수를 구하려고 하는데요.
while 을 돌려
if @vi_A01 = 'FF'
begin
set @i = @i + 1
end
if @vi_A02 = 'FF'
begin
set @i = @i + 1
end
....
if @vi_A31 = 'FF'
begin
set @i = @i + 1
end
이렇게 해당값의 칼럼수를 구하는 방법 말고
심플한 쿼리 없을까요??
Comment 2
-
지영아빠
2022.06.28 18:28
-
PerryLous
2022.06.29 09:53
말씀주신데로 unpivot을 이용하니 깔끔하게 처리 되었습니다.
지영아빠님 정말 감사드립니다.
select
isno1,
sum (case val when 'AK' then 1 else 0 end) as val_countfrom (
select
isno1,
c_name,
val
from
pc100p
unpivot(val for c_name
in (ISC01,ISC02,ISC03,ISC04,ISC05,ISC06,ISC07,ISC08,ISC09,ISC10,ISC11,ISC12,ISC13,ISC14,ISC15,
ISC16,ISC17,ISC18,ISC19,ISC20,ISC21,ISC22,ISC23,ISC24,ISC25,ISC26,ISC27,ISC28, ISC29,ISC30,ISC31)
) as upv
where isno1 = '0601013' and isym1 = '201012'
) as x
group by isno1
select
row_num,
sum (iif(v_val='FF', 1, 0)) as val_count
from (
select
row_num,
c_name,
val
from
your_table
unpivot(val for c_name
in (A01, A02,,,,,A31)
) as upv
) x
group by row_num