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

Откуда:
Сообщений: 147
Сделал запросик, но как-то он коряво выглядит, но работает. Подскажите красивое решение, плз.

select
 convert(datetime,CONVERT(varchar(8), v.LoggedAt, 112)) LoggedAt
,v.Call_Leg_Direction
,v.Call_Leg_Type
,v.Acct_Status_Type
,v.Called_Station_Id
,count(*) All_count
,(select count(*) from  VoIPAccounting v1
  where
      v1.Acct_Session_Time=0
  and v1.Call_Leg_Direction=v.Call_Leg_Direction
  and v1.Acct_Status_Type=v.Acct_Status_Type
  and convert(datetime,CONVERT(varchar(8), v1.LoggedAt, 112))
      =convert(datetime,CONVERT(varchar(8), v.LoggedAt, 112))
  and v1.Called_Station_Id=v.Called_Station_Id) count0
from VoIPAccounting v
where
    v.Call_Leg_Direction='answer'
and v.Acct_Status_Type='Stop'
and v.LoggedAt>='01.01.2012'
and v.LoggedAt<='01.23.2012'

group by
 convert(datetime,CONVERT(varchar(8), v.LoggedAt, 112))
,v.Call_Leg_Direction
,v.Call_Leg_Type
,v.Called_Station_Id
,v.Acct_Status_Type
order by 1 desc
23 янв 12, 14:31    [11952504]     Ответить | Цитировать Сообщить модератору
 Re: Сделал запросик, но как-то он коряво выглядит, но работает. Подскажите красивое решение, п  [new]
Glory
Member

Откуда:
Сообщений: 104751
MikleBess
Подскажите красивое решение,

select 1 - самое красивое решение, с точки зрения длины кода.
23 янв 12, 14:34    [11952534]     Ответить | Цитировать Сообщить модератору
 Re: Сделал запросик, но как-то он коряво выглядит, но работает. Подскажите красивое решение, п  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
MikleBess, а зачем постоянные преобразования дат? Чтобы индексы не использовать? А также строковая константа вида '01.01.2012' не есть хорошо. Также не совсем ясна необходимость коррелированного подзапроса. Может лучше CROSS APPLY? Или вообще переписать с одним сканом, через ранжирования?

Но это все угадайка, без понимания задачи и без тестовых данных.
23 янв 12, 14:36    [11952569]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить