Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8   вперед  Ctrl      все
 Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
Добрый день! Вот мой запросик

select CarNumber,SendDate,ReceiveDate,IDSourceSt,IDDestSt from DL
where CarNumber = '50000140' and
SendDate between '20120101'and '20130327'
ORDER BY CarNumber,SendDate

Мне нужно сравнить 2 колонки IDSourceSt,IDDestSt по условию. Условие следующие, записал в excel, как то надо здесь вывести) =ЕСЛИ(D2=E1;1;0) То есть значение колонки IDDestSt должно быть равно значению колонки IDSourceSt которое строкой ниже.
Как это возможно сделать? Нужно получать результат, где не совпадает.
28 мар 13, 11:20    [14106048]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
case
  when IDSourceSt = IDDestSt  
   then 1 
   else 0
end
28 мар 13, 11:22    [14106058]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
Maxx, не очень понятно куда вставить в мою конструкцию)
28 мар 13, 11:26    [14106094]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Добрый Э - Эх
Guest
PavelAA,

если версия позволяет - использовать LEAD/LAG, если не позволяет - имитировать их через TOP-1 подзапрос.
28 мар 13, 11:31    [14106125]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
PavelAA
значение колонки IDDestSt должно быть равно значению колонки IDSourceSt которое строкой ниже.
Как это возможно сделать? Нужно получать результат, где не совпадает.
перенумеровать (row_number() over...), объединить со следующей строкой (join), сравнить значения из текущей и следующей строк
28 мар 13, 11:31    [14106133]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Добрый Э - Эх
Guest
конкретные примеры реализации обсуждались чуть ли не вчера
28 мар 13, 11:32    [14106138]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
PavelAA
значение колонки IDDestSt должно быть равно значению колонки IDSourceSt которое строкой ниже.

недочитал :) Уже ответили
28 мар 13, 11:35    [14106159]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
А можно написать? :) Если не трудно) сервер 2012! Спасибо за ответы)
28 мар 13, 11:39    [14106182]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
PavelAA
А можно написать? :) Если не трудно) сервер 2012! Спасибо за ответы)

Посик по форуму по словам LEAD/LAG -даст желаемый результат
28 мар 13, 11:41    [14106199]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Добрый Э - Эх
Guest
PavelAA
А можно написать? :) Если не трудно) сервер 2012! Спасибо за ответы)
Написать можно, и нетрудно. Но ты же не привел тестовых данных в удобоваримом виде, на которых можно показывать решение....
28 мар 13, 11:47    [14106227]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
Добрый Э - Эх, Если вы имеете ввиду кусочек примера то вот.

50000140 2012-11-16 14:49:13.000 2012-11-22 02:22:11.000 4792 19745
50000140 2012-11-22 12:49:26.000 2012-11-28 01:16:18.000 19745 4792
50000140 2012-11-28 00:00:00.000 2012-12-04 00:00:00.000 4792 19745
50000140 2012-11-28 04:45:00.000 2012-11-28 04:56:19.000 4792 4792
50000140 2012-11-28 06:46:30.000 2012-11-28 06:53:45.000 4792 4792
50000140 2012-11-28 15:32:00.000 2012-12-04 00:00:00.000 4792 19745
50000140 2012-12-05 00:00:00.000 2012-12-12 00:00:00.000 17652 19745
50000140 2012-12-05 13:31:00.000 2012-12-12 00:00:00.000 17652 19745
50000140 2012-12-14 00:00:00.000 2012-12-19 00:00:00.000 19745 4792
28 мар 13, 11:50    [14106245]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
PavelAA,

Пункт 6
Вот ето имеют в виду
28 мар 13, 11:51    [14106251]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
Наверно я что то не понимаю, но вроде свой запрос я выложил, пример его показал) Задачу вроде озвучил)
28 мар 13, 11:54    [14106267]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Гость333
Member

Откуда:
Сообщений: 3683
PavelAA
Наверно я что то не понимаю, но вроде свой запрос я выложил, пример его показал) Задачу вроде озвучил)

В п.6 по указанной ссылке рекомендуется ещё предоставить:
автор
- скрипты создания таблиц;
- скрипты заполнения этих таблиц тестовыми данными;

То есть что-то вроде:
CREATE TABLE aaa(col1 int, col2 varchar(100), col3 datetime);
INSERT aaa VALUES(1, 'string 1', '20130327');
INSERT aaa VALUES(2, 'string 2', '20130328');

То есть чтобы сделать Ctrl-C, Ctrl-V, F5 и тут получить исходные данные, а не выколупывать их из:
автор
50000140 2012-11-16 14:49:13.000 2012-11-22 02:22:11.000 4792 19745
50000140 2012-11-22 12:49:26.000 2012-11-28 01:16:18.000 19745 4792
:-)
28 мар 13, 12:01    [14106299]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость333
тут же получить исходные данные
28 мар 13, 12:02    [14106305]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Добрый Э - Эх
Guest
PavelAA,
-- Твои тестовые данные:
with dl(CarNumber,SendDate,ReceiveDate,IDSourceSt,IDDestSt) as 
(select * from (values

(50000140,	'2012-11-16 14:49:13.000',	'2012-11-22 02:22:11.000',	4792,	 19745),
(50000140,	'2012-11-22 12:49:26.000',	'2012-11-28 01:16:18.000',	19745,    4792),
(50000140,	'2012-11-28 00:00:00.000',	'2012-12-04 00:00:00.000',	4792,	 19745),
(50000140,	'2012-11-28 04:45:00.000',	'2012-11-28 04:56:19.000',	4792,	 4792),
(50000140,	'2012-11-28 06:46:30.000',	'2012-11-28 06:53:45.000',	4792,	 4792),
(50000140,	'2012-11-28 15:32:00.000',	'2012-12-04 00:00:00.000',	4792,	 19745),
(50000140,	'2012-12-05 00:00:00.000',	'2012-12-12 00:00:00.000',	17652,    19745),
(50000140,	'2012-12-05 13:31:00.000',	'2012-12-12 00:00:00.000',	17652,   19745),
(50000140,	'2012-12-14 00:00:00.000',	'2012-12-19 00:00:00.000',	19745,    4792)
                ) v(q,a,z,w,s)
 )
--
-- Основной запрос (получение "следующих", "предыдущих" значений):
select *, 
       lead(IDSourceSt) over(partition by CarNumber order by SendDate) as next_IDSourceSt,
       lag(IDSourceSt) over(partition by CarNumber order by SendDate) as prev_IDSourceSt,
       lead(IDDestSt) over(partition by CarNumber order by SendDate) as next_IDDestSt,
       lag(IDDestSt) over(partition by CarNumber order by SendDate) as prev_IDDestSt
  from dl

ну а уж case написать, думаю и сам сможешь...
28 мар 13, 12:17    [14106404]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
Прискорбно, но case написать сам не смогу) 1 день изучаю) Изучаю по поставленной задаче, параллельно читая книжку. Так что буду очень благодарен за полный ответ. Спасибо вам за помощь)
28 мар 13, 13:10    [14106776]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
Сообщение 195, уровень 15, состояние 10, строка 6
lead не является известным имя встроенной функции.
28 мар 13, 13:11    [14106786]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Glory
Member

Откуда:
Сообщений: 104760
PavelAA
lead не является известным имя встроенной функции.

Зачем вы тогда заявляли "сервер 2012! " ?
28 мар 13, 13:12    [14106795]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
потому что такой и стоит... Может компонентов каких нет, я не знаю, может кусок недостающий просто. Я просто вставил то, что мне написали и показал ошибку.
28 мар 13, 13:24    [14106884]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Glory
Member

Откуда:
Сообщений: 104760
PavelAA
потому что такой и стоит...

И как вы это проверили ?
28 мар 13, 13:24    [14106889]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
Glory
PavelAA
потому что такой и стоит...

И как вы это проверили ?
Зашел в справку и нажал о программе.
28 мар 13, 13:32    [14106944]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Гость333
Member

Откуда:
Сообщений: 3683
PavelAA
Зашел в справку и нажал о программе.

Отлично, а теперь выполните запрос
select @@version
и выложите его результат.
28 мар 13, 13:34    [14106949]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
Glory
Member

Откуда:
Сообщений: 104760
PavelAA
Зашел в справку и нажал о программе.

Какое отношение ваша клиентская программа имеет к серверу ?
28 мар 13, 13:34    [14106959]     Ответить | Цитировать Сообщить модератору
 Re: Как сравнить две колонки с условием  [new]
PavelAA
Member

Откуда:
Сообщений: 121
Прошу прощения... Ошибку понял.... server 2008 ... Задача осталась :(
28 мар 13, 13:43    [14107031]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить