2014-12-12 4 views
0

누군가 아플 때가 있는지 확인해야하며 불행히도 데이터는 별도의 두 테이블에 저장됩니다. 그리고 그들이 여기에 있다면 나는 경로 A를 실행해야합니다. 경로 B를 실행해야합니다. 이것은 제가 생각한 것입니다. 그러나 컴파일 오류 후 컴파일 오류가 발생합니다. 누군가지도를 제공 할 수 있습니까?비트 사용 (bool) SQL 쿼리에서 확인

Create Table #Uno (Id Int Identity, employee varchar(50)) 
Select empName 
From employeeDatabase 
WHERE empStatus = 'Active' 


Declare @outSick bit, @empName varchar(50), @N int, @MAXID int 

Set @N = 1 
SELECT @MAXID = Max(ID) 
FROM @Uno 
WHILE (@N<=MAXID) 
BEGIN 
--Second Table that stores this data 
Select @outSick = callIn 
FROM callinDatabase 
WHERE empName = @empName 

--Returns Yes or True 
If @outSick = 1 
    Set @N = @N + 1 
Else 
    --If not out sick Do this sql statement 
    Set @N = @N + 1 
End 
+0

여기서 루프를 사용하면 안됩니다. 그리고 바닥에있는 IF 블록의 요점은 무엇입니까? 그것은 outSick의 값에 관계없이 N에 1을 더합니다. –

+0

당신이 맞습니다. 끝 구문과 끝 구문이 필요하지 않습니다. 구문을 업데이트했습니다. 루프를 사용하지 않고 반복 할 코드 블록을 어떻게 결정해야합니까? – user2676140

+0

양면은 여기에서 동일합니다. 너 정말로 무엇을하려고하는거야? 아마도 직원이 outSick = 1 인 행 수를 얻은 것 같습니다. 이것은 단일 select 문에서 수행 할 수 있고해야합니다. 성능면에서 끔찍한 경우에는 루핑을하고 이와 같은 경우에는 필요하지 않습니다. –

답변

0

이유는 아래처럼 모두 하나 개의 쿼리에서이 작업을 수행 할 수 있습니까?

select 
    employeeDatabase.empName, 
    case 
     when callinDatabase.callin = '1' then 'Out Sick' 
     else 'Not Out Sick' 
    end as OutSick 
from employeeDatabase left join callinDatabase 
    on employeeDatabase.empName = callinDatabase.empName 
where employeeDatabase.empStatus = 'active' 
0
Create Table #Uno (Id Int Identity, employee varchar(50)) 
Select empName 
From employeeDatabase 
WHERE empStatus = 'Active' 


Declare @outSick bit, @empName varchar(50), @N int, @MAXID int 

Set @N = 1 
SELECT @MAXID = Max(ID) 
FROM #Uno     <----- HERE 
WHILE (@N<[email protected])  <------- HERE 
BEGIN 
--Second Table that stores this data 
Select @outSick = callIn 
FROM callinDatabase 
WHERE empName = @empName 

--Returns Yes or True 
If @outSick = 1 
    Set @N = @N + 1 
Else 
    --If not out sick Do this sql statement 
    Set @N = @N + 1 
End      <-------------- Here 
+0

varchar를 bit로 변환하는 중 구문 오류가 발생합니다. varchar 값은이 줄에서 호출 ... Select @outSick = callIn – user2676140