Кто-то может мне помочь? У меня есть поле с этой структурой: 2,3,4,5,6,0,1 это день недели, и я должен найти, если сегодня последний день доставки недели, проблема в этом :SQL, Case with Like внутри где
Пример: сегодня это день 3 и со следующим запросом. Я могу выбрать все, что заканчивается с номером 3, но если у меня есть кто-то, у кого есть эта структура: 3,0,1 или 3,1 или 3 , 0 Я их не получаю.
declare @today int
set @today=DATEPART(dw,GETDATE())-2
print @today
select cast (cfv.value as VARCHAR)
from CompanyFieldvalues cfv
join CompanyFields cf on cf.companyFieldId=cfv.companyFieldId
where cf.name='NextDeliveryDates' and cfv.companyId in(
select cfv.companyId
from CompanyFieldvalues cfv
join Companies c on c.companyId=cfv.companyId
where cfv.value='Retailer' and c.status=1)
and (cfv.value like '%,' + cast (@today as VARCHAR) or cfv.value like '%' + cast (@today as VARCHAR))
Чтобы исправить это, я трудно представить случай, так что мой запрос будет такой:
declare @today int
set @today=DATEPART(dw,GETDATE())-2
print @today
select cast (cfv.value as VARCHAR)
from CompanyFieldvalues cfv
join CompanyFields cf on cf.companyFieldId=cfv.companyFieldId
where cf.name='NextDeliveryDates' and cfv.companyId in(
select cfv.companyId
from CompanyFieldvalues cfv
join Companies c on c.companyId=cfv.companyId
where cfv.value='Retailer' and c.status=1)
and (cfv.value like '%,' + cast (@today as VARCHAR) or cfv.value like '%' + cast (@today as VARCHAR)) and case
when (@today != 0 or @today!=1)
then (cfv.value not like '%,0' or cfv.value not like '%,1')
Но в этом случае я получаю сообщение об ошибке:
Msg 156 , Уровень 15, Состояние 1, Строка 14 Неверный синтаксис рядом с ключевым словом 'not'.
Я уверен, что я делаю некоторые глупые ошибки, но я не понимаю: S
Некоторые помогают пожалуйста! Большое спасибо
Tag СУБД, много продукции конкретного SQL там ... – jarlh
большое спасибо;) –
Я имею в виду маркировать продукт DBMS вы использование. (Например, SQL Server, или Oracle, или Sybase, или что-то еще.) Тогда ваш вопрос получит лучшее внимание, и вы получите лучшие ответы быстрее! – jarlh