powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
12 сообщений из 12, страница 1 из 1
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660433
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, форумчане!

Столкнулся с проблемой создания представления с вычисляемыми столбцами.
Есть БД, в ней 3 связанных таблицы: Flood, Post, GeographicalKoordinates (фото - Схема БД)

Сперва сделал следующее представление (ну как сделал, помогли сделать):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE VIEW dbo.AvgSpeedLevelSnow AS
	SELECT [Id_Flood],
		   [Id_Post],
		   [DateAndTimes],
		   [LevelSnow],
		   LAG(LevelSnow) OVER(partition by Id_Post order by DateAndTimes) AS PastLevelSnow ,
		   LAG(DateAndTimes) OVER(partition by Id_Post order by DateAndTimes) AS PastDateAndTimes,
		   (LevelSnow-LAG(LevelSnow) OVER(partition by Id_Post order by DateAndTimes))/NULLIF(DATEDIFF(hour,LAG(DateAndTimes) OVER(partition by Id_Post order by DateAndTimes),DateAndTimes),0) AS SpeedLevelSnow
		   FROM dbo.Flood;
		   GO


Которое берёт данные из таблицы Flood и рассчитывает среднею скорость между 2-мя ближайшими по времени записями таблицы Flood по каждому Id_Post.

Далее хотел сделать так, что бы вместо простого Id_Post подтягивалось имя поста из таблицы Post, и аналогично с координатами из таблицы GeographicalKoordinates:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE VIEW dbo.AVGSpeedLevelWater AS
	SELECT  dbo.Flood.Id_Flood, 
	dbo.Post.NamePost,
	dbo.GeographicalKoordinates.Koordinate,
	dbo.Flood.DateAndTimes,
	dbo.Flood.LevelWater,
	LAG(LevelWater) OVER(partition by Id_Post order by DateAndTimes) AS PastLevelWater ,
	LAG(DateAndTimes) OVER(partition by Id_Post order by DateAndTimes) AS PastDateAndTimes,
	(LevelWater-LAG(LevelWater) OVER(partition by Id_Post order by DateAndTimes))/NULLIF(DATEDIFF(hour,LAG(DateAndTimes) OVER(partition by Id_Post order by DateAndTimes),DateAndTimes),0) AS SpeedLevelWater
	FROM dbo.Flood INNER JOIN
                         dbo.Post ON dbo.Flood.Id_Post = dbo.Post.Id_Post INNER JOIN
                         dbo.GeographicalKoordinates ON dbo.Post.Id_GeographicalKoordinates = dbo.GeographicalKoordinates.Id_GeographicalKoordinates;



Но мне выдало ошибки:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
сообщение: 209, уровень: 16, состояние: 1, процедура: AVGSpeedLevelWater, строка: 7 [строка начала пакета: 196]
Неоднозначное имя столбца "Id_Post".
сообщение: 209, уровень: 16, состояние: 1, процедура: AVGSpeedLevelWater, строка: 8 [строка начала пакета: 196]
Неоднозначное имя столбца "Id_Post".
сообщение: 209, уровень: 16, состояние: 1, процедура: AVGSpeedLevelWater, строка: 9 [строка начала пакета: 196]
Неоднозначное имя столбца "Id_Post".
сообщение: 209, уровень: 16, состояние: 1, процедура: AVGSpeedLevelWater, строка: 9 [строка начала пакета: 196]
Неоднозначное имя столбца "Id_Post".
сообщение: 209, уровень: 16, состояние: 1, процедура: AVGSpeedLevelWater, строка: 9 [строка начала пакета: 196]
Неоднозначное имя столбца "Id_Post".



Подскажите, можно ли здесь что-то сделать, что бы подтягивались не просто ID, а данные по этим ID из связанных таблиц, не создавая дополнительного представления?
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660437
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,

в partition by Id_Post укажите алиас нужный
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660438
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,

везде на столбцах пишите алиасы.
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660447
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK, что такое алиас?

авторpartition by Id_Post Это где?
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660455
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE VIEW dbo.AVGSpeedLevelWater AS
	SELECT  FLOOD.Id_Flood, 
	POST.NamePost,
	KO.Koordinate,
	FLOOD.DateAndTimes,
	FLOOD.LevelWater,
	LAG(LevelWater) OVER(partition by FLOOD.Id_Post order by DateAndTimes) AS PastLevelWater ,
	LAG(DateAndTimes) OVER(partition by FLOOD.Id_Post order by DateAndTimes) AS PastDateAndTimes,
	(LevelWater-LAG(LevelWater) OVER(partition by FLOOD.Id_Post order by DateAndTimes))/NULLIF(DATEDIFF(hour,LAG(DateAndTimes) OVER(partition by FLOOD.Id_Post order by DateAndTimes),DateAndTimes),0) AS SpeedLevelWater
	FROM dbo.Flood FLOOD INNER JOIN
                         dbo.Post POST ON FLOOD.Id_Post = POST.Id_Post INNER JOIN
                         dbo.GeographicalKoordinates KO ON POST.Id_GeographicalKoordinates = KO.Id_GeographicalKoordinates;


FLOOD,POST,KO - алиасы таблиц
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660467
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
londinium, у меня так и есть, только ещё "dbo." перед ним указано (пробовал его убирать результат тот же) :
авторДалее хотел сделать так, что бы вместо простого Id_Post подтягивалось имя поста из таблицы Post, и аналогично с координатами из таблицы GeographicalKoordinates:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE VIEW dbo.AVGSpeedLevelWater AS
	SELECT  dbo.Flood.Id_Flood, 
	dbo.Post.NamePost,
	dbo.GeographicalKoordinates.Koordinate,
	dbo.Flood.DateAndTimes,
	dbo.Flood.LevelWater,
	LAG(LevelWater) OVER(partition by Id_Post order by DateAndTimes) AS PastLevelWater ,
	LAG(DateAndTimes) OVER(partition by Id_Post order by DateAndTimes) AS PastDateAndTimes,
	(LevelWater-LAG(LevelWater) OVER(partition by Id_Post order by DateAndTimes))/NULLIF(DATEDIFF(hour,LAG(DateAndTimes) OVER(partition by Id_Post order by DateAndTimes),DateAndTimes),0) AS SpeedLevelWater
	FROM dbo.Flood INNER JOIN
                         dbo.Post ON dbo.Flood.Id_Post = dbo.Post.Id_Post INNER JOIN
                         dbo.GeographicalKoordinates ON dbo.Post.Id_GeographicalKoordinates = dbo.GeographicalKoordinates.Id_GeographicalKoordinates;
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660483
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirTaPaK, что такое алиас?В гугле забанили?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE VIEW dbo.AVGSpeedLevelWater AS
	SELECT  f.Id_Flood, 
	p.NamePost,
	k.Koordinate,
	f.DateAndTimes,
	f.LevelWater,
	LAG(f.LevelWater) OVER(partition by f.Id_Post order by f.DateAndTimes) AS PastLevelWater ,
	LAG(f.DateAndTimes) OVER(partition by f.Id_Post order by f.DateAndTimes) AS PastDateAndTimes,
	(f.LevelWater-LAG(f.LevelWater) OVER(partition by f.Id_Post order by f.DateAndTimes))/NULLIF(DATEDIFF(hour,LAG(f.DateAndTimes) OVER(partition by f.Id_Post order by f.DateAndTimes),f.DateAndTimes),0) AS SpeedLevelWater
	FROM dbo.Flood f INNER JOIN
                         dbo.Post p ON f.Id_Post = p.Id_Post INNER JOIN
                         dbo.GeographicalKoordinates k ON p.Id_GeographicalKoordinates = k.Id_GeographicalKoordinates;
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660492
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm, на вопрос про алиас уже ответили.

Мой пример с попыткой создания представления уже содержит так называемые алиасы.
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660501
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,

Ну продолжайте считать что у вас все верно написано и ошибок нет.
Если проявите должное усердие у будете скармливать этот запрос серверу как можно чаще, возможно ему надоест и он согласится с вами, что запрос верный.
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660642
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
londinium, прошу прощения, не внимательно изучил ваш пример - не увидел, что в функции расчёта тоже нужно указать алисы.
Спасибо! Помогло.
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660644
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK, спасибо! Помогло.
...
Рейтинг: 0 / 0
Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
    #39660646
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, спасибо! Помогло.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание представления с вычисляемыми столбцами (ошибка "Неоднозначное имя столбца )
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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