2013-09-20 2 views
0
select PERSONNUM, PAYCODENAME as StraightTime, PAYCODENAME as OT 
from dbo.VP_ALLTOTALS 
where OT in ('Overtime', 'Double Overtime') 
return 'OT', 
and StraightTime in ('Straight Time Earnings', 'Sunday Premium') 
return 'Straight Time' 
+0

Показать образец данных и желаемый результат. –

+0

Просто ищите логическую помощь здесь. Хотелось бы вернуть столбец «OT» или «Straight Time» – user2800758

+0

Просто ищите здесь логическую помощь. Хотел бы вернуть столбец «OT» или «Straight Time» на основе параметров в предложении WHERE. – user2800758

ответ

0

Я предполагаю, что вы ищете CASE:

SELECT CASE 
     WHEN ot IN ('Overtime', 'Double Overtime') THEN ot 
     WHEN straighttime IN ('Straight Time Earnings', 'Sunday Premium') 
      THEN straighttime 
     ELSE NULL 
     END AS ColumnName 
FROM dbo.vp_alltotals 

Demo

или, если вы просто хотите, чтобы вернуть строку OR/Straight Time:

SELECT CASE 
     WHEN ot IN ('Overtime', 'Double Overtime') THEN 'OT' 
     WHEN straighttime IN ('Straight Time Earnings', 'Sunday Premium') 
      THEN 'straighttime' 
     ELSE NULL 
     END AS Type 
FROM dbo.vp_alltotals 

Demo

0

В тех случаях, когда кластеры являются фильтрами, только вставьте логику в строку выбора, используя оператор case.

select PERSONNUM, PAYCODENAME as StraightTime, PAYCODENAME as OT 
case when OT in ('Overtime', 'Double Overtime') then 'OT', 
when StraightTime in ('Straight Time Earnings', 'Sunday Premium') then 'Straight Time' 
else 'not in list?' end as 'returnedcode' --name your new column here 
from dbo.VP_ALLTOTALS 
Смежные вопросы