Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск отсутствующих номеров / 14 сообщений из 14, страница 1 из 1
29.07.2002, 13:10:39
    #32039341
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
Господа, поскольку восстанавливаю сервер и кроме интернете ничего доступного нет, предлагаю обсудить следующее.
У меня есть таблица - CstBills содержащая документы под номерами... Numbers причем в varchar(50).
Документы разные, следовательно в номерах имеются слова 'б\н','без/н', причем номера могут повторяться, вообщем анархия полная.
Возникла необходимость выбрать из этой таблицы, остсутствующие номера т.е.
я знаю что документов выписано maxNumber=999999, как узнать какие из номеров=<maxNumber отсутствуют в БД.... дело в том, что простое сравнение чисмел не катит, возникает ошибка преобразования..... что есстественно
Thanks in advance
...
Рейтинг: 0 / 0
29.07.2002, 13:16:29
    #32039346
Artem
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
а существует ли возможность сущестьвования документов 100 и 100а???
если нет то я делал это через UDF хотя у гуру возможно есть другие решения
...
Рейтинг: 0 / 0
29.07.2002, 13:16:37
    #32039348
Artem
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
а существует ли возможность существования документов 100 и 100а???
если нет то я делал это через UDF хотя у гуру возможно есть другие решения
...
Рейтинг: 0 / 0
29.07.2002, 13:23:01
    #32039353
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
а существует ли возможность существования документов 100 и 100а???
если нет то я делал это через UDF хотя у гуру возможно есть другие решения

Думаю, что да.... так как есть документы скажем:
1000 и
10001
10002
...
Рейтинг: 0 / 0
29.07.2002, 14:29:08
    #32039396
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
если готовы подождать :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
set nocount on
declare @t table(n int)
declare @n int set @n= 0 
while @n< 1000 
begin
  insert @t select @n
  set @n=@n+ 1 
end

declare @max int   -- максимальный номер документа
 

select @max=max(n1.n* 1000 +n2.n) 
  from CstBills, @t n1, @t n2  
  where Numbers like '%'+convert(varchar( 22 ), n1.n* 1000 +n2.n)+'%'

select n1.n* 1000 +n2.n 
  from @t n1, @t n2 
  where not exists(select * from CstBills 
      where Numbers  like '%'+convert(varchar( 22 ), n1.n* 1000 +n2.n)+'%') 
  and n1.n* 1000 +n2.n<@max

правда некоторые дырки не найдутся
...
Рейтинг: 0 / 0
29.07.2002, 16:18:00
    #32039437
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
Не так давно, я задавал аналогичный вопрос по преобразованию номер из символьного представления в число.

Вот решение предложенное Glory

Код: plaintext
1.
SELECT CAST(LEFT(cNumber, PATINDEX('%[^1234567890]%', cNumber+'a')- 1 ) as int) as nNumber


Т.е. в моей постановке данная функция выделяет из символьной строки первые цифровые символы до первой НЕ цифры и преобразовывает результат в число.

Ну, а теперь можешь сравнивать числа.
...
Рейтинг: 0 / 0
29.07.2002, 18:14:51
    #32039487
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
Вопрос к just4fun.

Если не секрет, а зачем это нужно? Наверное не для того, что бы бухнуть на стол шефу распечатку, со словами: "Нет, Вы только гляньте, сколько номеров пропустили эти прудурки"?
У меня такое чувство, что Вам совсем не нужны ВСЕ пропущенные номера.
Если не все, то задача резко упрощается.
...
Рейтинг: 0 / 0
29.07.2002, 22:29:03
    #32039526
SergCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
Просто перед преобразованием проверять строку Numbers функцией IsNumeric().
...
Рейтинг: 0 / 0
30.07.2002, 03:02:39
    #32039531
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
Интересно получается, нужно срочно всё проверить :-)) ... вот только сервер пока лежит:(

to Cat2...
Есть такой докУмент - квитанция строгой отчетности.
Так вот у НАС такая отчетность, года два не велась....
Т.е. велись только оплаченные квитанции (CstBills), а аннулированные лежат в большом пакете...
Теперь ИМ (бух-ам) нужно забить в базу всё из пакета, а мне после этого нужно найти, собственно всё, что исчезло.

С наилучшими пожеланиями...
...
Рейтинг: 0 / 0
30.07.2002, 08:08:35
    #32039539
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
Если бухи еще не приступали к набивке, то может быть имеет смысл сделать, пусть временно, два поля, одно INT, для номера, а второе CHAR для всяких там суффиксов и "БЕс\ном"?
...
Рейтинг: 0 / 0
30.07.2002, 08:20:33
    #32039540
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
to Cat2
Верно, как вариант, но мне больше нравится вариант при котором в CstBills будут вноситься все документы со статусом - новый, к примеру..... а тогда вычислить, какие документы с Января 17 года .... новые дело тревиальное :)
...
Рейтинг: 0 / 0
30.07.2002, 08:26:08
    #32039541
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
Таким образом сейчас можно использовать процедуры SergSuper'а или ВладимиромМ'а для заполнения отсутствующими номерами со статусом -новый- и со своей датой регистрации, а потом бухам менять этот статус на аннулирован, или...... ПОТЕРЯН!!!
:)
...
Рейтинг: 0 / 0
30.07.2002, 18:02:03
    #32039733
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
Очень часто бывает, что даже совершенно неправильные советы в результате дают нужный результат. Только нужно глянуть на свою задачу с другой стороны.

На всякий случай, вдруг пригодится, зря что-ли писал.
Обнаружение отсутствующих номеров.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
set nocount on
create table DocOrder (NN int)  --якобы таблица с "дырками"
 
insert into DocOrder values ( 2 )
insert into DocOrder values ( 5 )
insert into DocOrder values ( 9 )
create table DocOrderFull (NN int)  --таблица без "дырок"
 
declare @i int
set @i= 1 
while @i<= 10 
begin
insert into DocOrderFull values (@i)
set @i=@i+ 1 
end

select NN from DocOrderFull 
where not NN in (select NN from DocOrder)

go
drop table DocOrder
drop table DocOrderFull
go
...
Рейтинг: 0 / 0
01.08.2002, 07:25:26
    #32040134
just4fun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск отсутствующих номеров
Точно не зря.... уж я себя знаю..
Спасибо за советы :))
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск отсутствующих номеров / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]