2014-12-16 2 views
0

Я хочу вывести три дня в декабре, которые являются 11,12 и 15, я не хочу получать данные с 13-го и 14-го. В любом случае я мог бы сделать это, не имея «write-Access» для SET DATE.За исключением выходных данных из Oracle SQL (EDW/Teradata)

Вот мой запрос, который не работает.

select distinct fill_sold_dt,sum(fill_qty_dspn) as Pills, sum((fill_qty_dspn)/(pkg_sz*pkg_qty)) as Packs 
from 
prdedwvwh.prescription_fill_sold pf, prdedwvwh.location_store_address_cur lsa, prdedwvwh.drug_cur d 
where pf.str_nbr=lsa.str_nbr and 
d.drug_id=pf.drug_id 
and ((fill_sold_dt(dw,'2014-12-09') + @@DATEFIRST) % 7) NOT IN (5, 6) 
and wic_nbr in (683378,335776,418723) 
group by fill_sold_dt 
+0

Это не выглядит как Oracle SQL , Это SQL-Server? – OldProgrammer

+0

Это Teradata/EDW, когда мы получаем ошибки, они всегда являются ошибками Oracle, поэтому я предположил, что это Oracle. Может быть, PL SQL? Все в офисе просто называет это Teradata. – SQUISH

ответ

0

Попробуйте использовать условие, как это (your_date типа даты):

.. where to_char(your_date,'d','NLS_DATE_LANGUAGE=ENGLISH') not in (1,7); 

Это даст вам все дни, кроме выходных.

Без NLS_SETTINGS:

.. where TRUNC (your_date) - TRUNC (your_date, 'IW') + 1 not in (1,7); 
+0

Будет ли это работать, если у меня нет «Write ACcess» в SqL? Я являюсь пользователем только для чтения. – SQUISH

+0

Я думаю, что он должен работать, но я рекомендую вам использовать второй случай (без nls_settings), который является более простым. – Aramillo

0

Так как я не могу полностью dechiper запроса SQL Server, здесь SQLFiddle пример, который показывает аналогичную конструкцию:

create table test1 (fill_sold_dt date, stuff number(10)); 
insert into test1 values('11-DEC-2014',1); 
insert into test1 values('12-DEC-2014',2); 
insert into test1 values('13-DEC-2014',3); 
insert into test1 values('14-DEC-2014',4); 
insert into test1 values('15-DEC-2014',5); 
insert into test1 values('16-DEC-2014',6); 

select * 
from test1 
where to_char(fill_sold_dt,'DY') not in ('SAT','SUN'); 
+0

Я предлагаю вам включить nls_settings, потому что язык может повлиять на ваше решение. – Aramillo

+0

Правильно, это были просто фиктивные данные для вставки в SQLFiddle. – OldProgrammer

+0

Я думаю, что он относится не только к вам INSERT, но и к TO_CHAR() в решении. С другой языковой средой вы можете получить SA и SO вместо SAT и SUN ;-) – Falco

Смежные вопросы