Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Преобразования типа данных nvarchar в bigint  [new]
plorkie
Member

Откуда:
Сообщений: 31
Добрый вечер!

Знаю, что тема изъезжанная вдоль и поперек, но прошу пожалуйста помочь, где зарыта собака.
Error converting data type nvarchar to bigint.

Имеется следующая процедура:

begin

if object_id ('t.1' , 'U') is not null
drop table t.1;

select 
  CGR.gr_id  as client_id,
  CO.order_pk  as check_id,
  NORD.ndk as ndk_number,
  NORD.ndk_type  as ndk_type,
  L.location_id as shop_code,
  NORD.delivery_date_fact as fact_delivery_date,
  NORD.order_delivery_fk   as delivery_type,
  getdate() as date_load,
  @sessionid as session_id
into t.1
from t.2 NORD
  inner join t.3 on NORD.NDK = NDK.ndk_id
  inner join
  (select CLIENT_PK, ORDER_PK 
	 from  t.4
		) CO 	on CO.ORDER_PK = NORD.ORDER_PK
  inner join
	(select t.5 
T)   CGR		on CGR.CLIENT_PK = CO.CLIENT_PK
  left join t.6 L 	on L.LOCATION_PK = NORD.LOCATION_id and getdate() between l.valid_from and l.valid_to
where @sessionid > NORD.session_id


структура таблицы на входе:
ORDER_PK bigint Unchecked
ORDER_ID nvarchar(255) Unchecked
ORDER_STATUS_FK int Unchecked
TRANSACTION_DT datetime Checked
NDK_FK bigint Checked
NDK nvarchar(255) Checked
NDK_TYPE nvarchar(3) Checked
LOCATION_FK bigint Checked
LOCATION_NUM nvarchar(255) Checked
LOCATION_ID nvarchar(255) Checked
DELIVERY_DATE_FACT datetime Checked
ORDER_DELIVERY_FK int Checked
VALID_FROM datetime Unchecked
SESSION_ID int Checked
Unchecked

таблица на выходе:
client_id bigint Unchecked
check_id bigint Unchecked
ndk_number nvarchar(255) Checked
ndk_type nvarchar(3) Checked
shop_code nvarchar(255) Checked
fact_delivery_date datetime Checked
delivery_type int Checked
date_load datetime Unchecked
session_id bigint Checked
Unchecked
12 июн 19, 21:41    [21907468]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36965
Checked, Unchecked -- что за чушь?

И да, проблема у вас ниже "from t.2 NORD".
12 июн 19, 23:48    [21907518]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
plorkie
Member

Откуда:
Сообщений: 31
Сергей, прошу прощения, не поправил
unchecked - not nulls
checked - null

И да, проблема у вас ниже "from t.2 NORD". - Буду признателен, если вы уточните почему именно проблема с этой таблицей "from t.2 NORD"? У меня есть подобная процедура, с почти аналогичной логикой запроса, где все работает отлично.
13 июн 19, 10:44    [21907739]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
andy st
Member

Откуда:
Сообщений: 797
plorkie,
on NORD.NDK = NDK.ndk_id
дичь, не?
13 июн 19, 11:10    [21907752]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
plorkie
Member

Откуда:
Сообщений: 31
andy_st,
Нет, здесь все верно к сожалению.
13 июн 19, 11:28    [21907764]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
plorkie
andy_st,
Нет, здесь все верно к сожалению.

и где там объект NDK?
13 июн 19, 11:30    [21907765]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
plorkie
andy_st,
Нет, здесь все верно к сожалению.
Что верно? Что такое NDK? Таблица? Где она во FROMе?
13 июн 19, 11:34    [21907771]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Как вообще удаётся создать таблицы t.1, t.2, t.3, t.4, t.5?
Вы что, не знаете, что имя таблицы не может начинаться с цифры,
а если уж очень хочется, надо заключать такое "неправильное" имя в двойные кавычки
или в квадратные скобки (это предпочтительнее)?

Может, я настолько отстал, что теперь всё можно?! :((
13 июн 19, 11:42    [21907779]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
А вот это как может быть?
inner join
	(select t.5 
T)   CGR		on CGR.CLIENT_PK = CO.CLIENT_PK
13 июн 19, 11:45    [21907781]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
plorkie
Member

Откуда:
Сообщений: 31
Виноват, изначально в письме случайно стер алиас "NDK"
inner join t.3 NDK on NORD.NDK = NDK.ndk_id


Вот другой скрипт, где все работает.

select
 grndk.gr_id as client_id,
 NC.check_pk as check_id,
 --NC.createddatetime as payment_date,
 RL.location_id as shop_code,
 RL.ref_city_name as shop_city,
 NC.ndk as ndk_number,
 NC.ndk_cardtype as ndk_type,
 NC.transdate as payment_date,
 NC.transtime as payment_time,
 '0' as analysis_phone_flg,
 getdate() as date_load,
 @sessionid as session_id
 into t.1 
 from t.2 NC
 join t.3 ndk on ndk.ndk_id = nc.ndk
 join (
	select NC.gr_id gr_id, CCN.ndk_pk ndk_pk
	from t.4 NC
	join t.5 CCN on NC.client_pk = CCN.client_pk
	group by NC.gr_id, CCN.ndk_pk)  grndk             on grndk.ndk_pk = nc.ndk_fk
left join t.6 RL on RL.location_pk = NC.location_fk and getdate() between RL.valid_from and RL.valid_to
where @sessionid > NC.session_id


таблица на входе t.2:
CHECK_PK bigint Unchecked
CHECK_ID nvarchar(100) Unchecked
CHECK_NUM nvarchar(100) Checked
LOCATION_FK bigint Checked
LOCATION_NUM nvarchar(90) Checked
LOCATION_ID nvarchar(90) Checked
NDK_FK bigint Checked
NDK nvarchar(90) Checked
NDK_CARDTYPE nvarchar(2) Checked
TRANSDATE datetime Unchecked
TRANSTIME time(7) Unchecked
VALID_FROM datetime Unchecked
SESSION_ID int Unchecked

таблица на выходе t.1:
client_id bigint Unchecked
check_id bigint Unchecked
shop_code nvarchar(90) Checked
shop_city nvarchar(90) Checked
ndk_number nvarchar(90) Checked
ndk_type nvarchar(2) Checked
payment_date datetime Unchecked
payment_time time(7) Unchecked
analysis_phone_flg varchar(1) Unchecked
date_load datetime Unchecked
session_id bigint Checked
13 июн 19, 11:49    [21907788]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
Konst_One
Member

Откуда:
Сообщений: 11517
Unchecked/Checked

а что это такое? вы можете показать скрипт создания этих таблиц, а не эти непонятные столбики
13 июн 19, 11:57    [21907792]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
andy st
Member

Откуда:
Сообщений: 797
plorkie,
телепатия вкл
типы полей ndk_id в t.3 и ndk в t.2 не совпадают
ну и добрая душа в varchar, (который int) наколбасил от души чисел прописью
телепатия выкл
13 июн 19, 11:59    [21907794]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
andy st
plorkie,
телепатия вкл
типы полей ndk_id в t.3 и ndk в t.2 не совпадают
ну и добрая душа в varchar, (который int) наколбасил от души чисел прописью
телепатия выкл
Включите телепатию, пожалуйста, ещё раз...
Что такое CGR.CLIENT_PK? Откуда берётся?
Раз вас не удивляет имя таблицы из цифры 3
13 июн 19, 13:06    [21907887]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
andy st
Member

Откуда:
Сообщений: 797
iap,
хватит тут чудес!
меня эта тема изначально провоцирует на цитирование трехсловного изречения алой ведьмы, но хочется быть вежливым и пока остается вера в то, что автор догадается к запросу прилагать скрипты всех сопутствующих объектов
13 июн 19, 13:56    [21907941]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования типа данных nvarchar в bigint  [new]
plorkie
Member

Откуда:
Сообщений: 31
Нашел ошибку, которая была совершенна по невнимательности.

Всем спасибо и сорри за изначально не совсем доступное для понимания предоставления инфы =)
13 июн 19, 16:17    [21908045]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить