Используются ли CTE в sybase? - PullRequest
       23

Используются ли CTE в sybase?

0 голосов
/ 13 декабря 2011

я просто хочу знать, если cte используются и в sybase ... я знаю, что cte используется для сервера sql ... но не знаю, используются ли они для sybase ...

Если Cte являютсяне используется для sybase, есть ли какой-либо другой метод в sybase, который он выполняет как CTE на сервере sql ... ??

У меня есть запрос, подобный ::

select CONVERT(VARCHAR(7)
  , [startdatetime],111) AS [year-month]
  , nm.nameLine1 AS CompanyName
  , sum(datediff(hour, startdatetime, enddatetime)) as total 
  from  srl 
  inner join  sr on srl.ServiceRequestId = sr.ServiceRequestId
  inner join Name nm
          on (sr.clientCustomerId = nm.customerId 
         and nm.nameTypeId = 'OFICE')
  where (startdatetime >= '08-01-2011 00:00:00.000'
    and enddatetime <= '10-31-2011 00:00:00.000')
  group by  CompanyName, [year-month]
  order by  CompanyName, [year-month]

выводПриведенный выше запрос:

year-month CompanyName        total       
---------- -----------     ----------- 
2011/08    B                    4 
2011/09    B                    7 
2011/10    B                    0 
2011/08    E                   167 
2011/09    E                   212 
2011/10    E                   131 
2011/08    L                    14 
2011/09    L                    23 
2011/10    L                     3 
2011/08    O                    18 
2011/09    O                     8 
2011/10    O                     7 
2011/08    S                    43 
2011/09    S                    60 
2011/10    S                    60 

я хочу, чтобы итоговые значения отображались в выходных данных как :: (я хочу, чтобы выходные данные были следующими)

year-month CompanyName        total        companytotals   
---------- -----------     -----------    --------------- 
2011/08    B                    4 
2011/09    B                    7 
2011/10    B                    0            11
2011/08    E                   167 
2011/09    E                   212 
2011/10    E                   131           510
2011/08    L                    14 
2011/09    L                    23 
2011/10    L                     3          40
2011/08    O                    18 
2011/09    O                     8 
2011/10    O                     7           33
2011/08    S                    43 
2011/09    S                    60 
2011/10    S                    60          163

Есть ли способы сделать это...?

Заранее спасибо ..

1 Ответ

1 голос
/ 13 декабря 2011

Насколько я знаю, Sybase ASA, начиная с версии 9, поддерживает CTE, но я не использую продукты Sybase. Хотя для вашего запроса вам не нужен CTE, я бы использовал обычные функции ранжирования .

Добавьте следующее к выбору:

, SUM(totals) OVER (PARTITION BY [year-month], [CompanyName]) AS companytotals
...