--변수
declare로 선언하고 set으로 할당한다
--if문
if ..else 안에 begin...end문을 반복하여 사용한다
--1.
declare @var1 int
set @var1=100
--if문
if @var1 = 100
begin
print '@var1 = ' + cast(@var1 as char(4))--cast로 문자로 변환해줌
end
else
begin
print '@var1 != ' + cast(@var1 as char(4))
end
--@var1 = 100
--2.
use AdventureWorks2019
declare @hireDate smalldatetime;
declare @curDate smalldatetime;
declare @years decimal(5,2);
declare @days int;
select @hireDate = HireDate
from HumanResources.Employee
where BusinessEntityID = 111
set @curDate = GETDATE()
set @years = DATEDIFF(year, @hireDate, @curDate)
set @days = DATEDIFF(day, @hireDate, @curDate)
if(@years >= 5)
begin
print N'입사한 지 ' + cast(@days as char(5)) + N'일이 지났습니다.'
print N'장기근속수당 대상자입니다.'
end
else
begin
print N'입사한 지' + cast(@days as char(5)) + N'일 밖에 안되었습니다.'
print N'계속 열심히 근무하세요.'
end
--입사한 지 4346 일이 지났습니다.
--장기근속수당 대상자입니다.
--case문
set 최종값, 아래
case ...end 사이에 when을 사용하여 값을 설정한다
declare @point int = 77, @credit nchar(1)
set @credit =
case
when (@point >= 90) then 'A'
when (@point >= 80) then 'B'
when (@point >= 70) then 'C'
when (@point >= 60) then 'D'
else'F'
end
print N'점수 ==> ' + cast(@point as char(3))
print N'학점 ==> ' + @credit
--점수 ==> 77
--학점 ==> C
--고객 등급 if문으로 출력
--만원이상 A, 5천원이상 B, 10원이상 C, 구매안한고객 D
select C.custId, C.custName, ISNULL( sum(sales), 0 ) as '총 구매액',
case when sum(sales) >= 10000 then 'A'
when sum(sales) > = 5000 then 'B'
when sum(sales) >= 10 then 'C'
else 'D'
end as[고객등급]
from customersTbl C
left join salesTbl S ON C.custId = S.custId
group by C.custId, C.custName
order by sum(sales) desc
--grade를 update..set..from 구문으로 값 입력하기
select *from customersTbl
update customersTbl
set
customersTbl.grade = S.grade2
from customersTbl as C,
(
select C.custId,
case when sum(sales) >= 10000 then 'A'
when sum(sales) >= 5000 then 'B'
when sum(sales) >= 10 then 'C'
else 'D'
end as grade2
from customersTbl C
left join salesTbl S ON C.custId = S.custId
group by c.custId
)
as S
where c.custId = s.custId
'Database > MSSQL work' 카테고리의 다른 글
union, union all, intersect, except (0) | 2020.11.10 |
---|---|
join (0) | 2020.11.10 |
NULL 값을 0으로 표시 (0) | 2020.11.10 |
Rollup(), Grouping (0) | 2020.11.09 |
CTE (0) | 2020.11.09 |