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

Откуда:
Сообщений: 7
Здравствуйте! Вопрос в следующем, дана таблица

*********************************
id * name * date1 * date2 *
*********************************
1 * Антон * 01.01.2014 * 05.01.2014
2 * Антон * 01.01.2014 * 05.01.2014
3 * Игорь * 01.01.2014 * 06.01.2014
4 * Вася * 02.03.2014 * 07.06 2014
5 * Вася * 02.03.2014 * 07.06 2014

Как мне посчитать общую сумму дней(date2-date1), чтобы не учитывались похожие записи?

p.s пробывал c дистинктом, чтобы отсеять похожие записи - не получилось
прошу помощи

даты и имя будут одинаковые, id разные

select sum(datediff(day,g1.date_open,g1.date_vup)+1) as kkk 
from tabel1, tabel 2
Where g1.name = g2.name and g1.id<>g2.id


выдает сумму дней(date2-date1) строк:

*********************************
id * name * date1 * date2 *
*********************************
1 * Антон * 01.01.2014 * 05.01.2014
2 * Антон * 01.01.2014 * 05.01.2014
4 * Вася * 02.03.2014 * 07.06 2014
5 * Вася * 02.03.2014 * 07.06 2014

а мне нужно сумму дней(date2-date1) строк:

*************************
name * date1 * date2
*************************
Антон * 01.01.2014 * 05.01.2014
Вася * 02.03.2014 * 07.06 2014
5 мар 14, 15:14    [15677432]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
shaguard,

за что же Игоря-то так?!

Откуда Вы про запятую во FROMе знания-то черпаете? Не поделитесь?
5 мар 14, 15:36    [15677606]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
shaguard
Member

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

select sum(datediff(day,g1.date_open,g1.date_vup)+1) as kkk 
from tabel g1, tabel g2
Where g1.name = g2.name and g1.id<>g2.id


ошибку исправил, но вопрос остается
5 мар 14, 15:42    [15677670]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
shaguard
p.s пробывал c дистинктом, чтобы отсеять похожие записи - не получилось
А как пробовали с дистинктом? Да, можно дистинкт испоьзовать, если я правильно понял задачу.
shaguard
from tabel1, tabel 2
Зачем вам две таблицы, если в результатах поля из одной таблицы?

Сформулируйте вопрос почётче.
shaguard
select sum(datediff(day,g1.date_open,g1.date_vup)+1) as kkk 
from tabel1, tabel 2
Where g1.name = g2.name and g1.id<>g2.id
Этот запрос выдаст синтаксическую ошибку.

Вы просто копируйте запросы из SSMS, не переписывайте по памяти.
5 мар 14, 15:46    [15677713]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
shaguard
*********************************
id * name * date1 * date2 *
*********************************
1 * Антон * 01.01.2014 * 05.01.2014
2 * Антон * 01.01.2014 * 05.01.2014
3 * Игорь * 01.01.2014 * 06.01.2014
4 * Вася * 02.03.2014 * 07.06 2014
5 * Вася * 02.03.2014 * 07.06 2014

Как мне посчитать общую сумму дней(date2-date1), чтобы не учитывались похожие записи?
Если отвлечься от остального непонятного описания, то так:
select sum(datediff(day, g1.date_open, g1.date_vup) + 1) as kkk 
from (
	select distinct name, date1, date2 
	from tabel as g1
) as g1
5 мар 14, 15:49    [15677756]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
shaguard
Member

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

Дана таблица, к примеру:

*********************************
id * name * date1 * date2 *
*********************************
1 * Антон * 01.01.2014 * 05.01.2014
2 * Антон * 01.01.2014 * 05.01.2014
3 * Игорь * 01.01.2014 * 06.01.2014
4 * Вася * 02.06.2014 * 07.06 2014
5 * Вася * 02.06.2014 * 07.06 2014

необходимо выбрать похожие записи(name и даты совпадают разница в id):

*********************************
id * name * date1 * date2 *
*********************************
1 * Антон * 01.01.2014 * 05.01.2014
2 * Антон * 01.01.2014 * 05.01.2014
4 * Вася * 02.06.2014 * 07.06 2014
5 * Вася * 02.06.2014 * 07.06 2014

вместо многих похожих записей взять одну, посчитать разницу

*********************************
name * date1 * date2 * datediff(day,date1,date2)+1
*********************************
Антон * 01.01.2014 * 05.01.2014* 5
Вася * 02.06.2014 * 07.06 2014* 6

и найти sum(datediff(day,date1,date2)+1)
5 мар 14, 15:56    [15677825]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
shaguard,

То есть "3 * Игорь * 01.01.2014 * 06.01.2014" не надо, потому что нету записи-дубликата?
Да, тогда distinct не поможет, нужно по другому
5 мар 14, 16:11    [15677960]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
shaguard
Member

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

Да, Игорь нам не нужен. Прошу прощения за свои корявые объяснения
5 мар 14, 16:14    [15677995]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
shaguard
alexeyvg,

Да, Игорь нам не нужен. Прошу прощения за свои корявые объяснения
тогда так:
select sum(datediff(day, g1.date_open, g1.date_vup) + 1) as kkk 
from (
	select g1.name, g1.date1, g1.date2, count(*) as cnt
	from tabel as g1
	group by g1.name, g1.date1, g1.date2
	having count(*) > 1
) as g1
5 мар 14, 16:33    [15678140]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
shaguard
Member

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

спасибо вам огромнейшее!
5 мар 14, 16:49    [15678254]     Ответить | Цитировать Сообщить модератору
 Re: подсчет кол-ва дней (не учитывая похожие записи)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8811
Ээ, счетчик вроде не особо нужен в списке выборки.
5 мар 14, 16:49    [15678258]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить