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

Откуда: Российская Федерация
Сообщений: 105
Имеется запрос создания представления
SELECT 
c.FriendlyName 'Инв. №',
 c.ComputerName 'Имя компьютера',
  o.Description 'Описание',
   s.Logdate 'Дата активности',
    SUM(s.ActivityTime) 'Активное время',
	s.ForegroundTime 'Общее время' 
	 FROM we_SummaryActivities s 
	 LEFT JOIN we_Computers c on c.ComputerId=s.ComputerId
	  LEFT JOIN we_OrgUnits o ON o.OrgUnitId=c.ParentId


Сейчас представление такое:
Инв.№   Имя компьютера    Описание        Дата активности     Активное время      Общее время
1          comp1          opisanie        01.01.2017                345              567
1          comp1          opisanie        01.01.2017                24                67
1          comp1          opisanie        01.01.2017                34                54
1          comp1          opisanie        01.01.2017                35                1567
1          comp1          opisanie        01.01.2017                145               367
1          comp1          opisanie        01.01.2017                45                 57


Как в представлении вывести только сумму за день по определенному компьютеру, например:
Инв.№   Имя компьютера    Описание        Дата активности     Активное время      Общее время
1         comp1          opisanie         01.01.2017                628                 2679


И т.д. за сумму за каждый день
22 апр 17, 08:18    [20424327]     Ответить | Цитировать Сообщить модератору
 Re: Создание представления  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Vladsn07
Имеется запрос создания представления
Не может существовать такой запрос, в нём ошибка.
22 апр 17, 09:29    [20424376]     Ответить | Цитировать Сообщить модератору
 Re: Создание представления  [new]
Massa52
Member

Откуда:
Сообщений: 379
Vladsn07,
Надо осуществить группировку по "Опеределенному компьютеру" и по "Дате".
Это как бы азы языка и желательно бы это знать.
22 апр 17, 09:55    [20424400]     Ответить | Цитировать Сообщить модератору
 Re: Создание представления  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
Может я не совсем правильно задал вопрос.
Представление:
Инв.№   Имя компьютера    Описание        Дата активности     Активное время      Общее время
1          comp1          opisanie        01.01.2017                345              567
1          comp1          opisanie        01.01.2017                24                67
2          comp2          opisanie2       02.01.2017                34                54
2          comp2          opisanie2      02.01.2017                35                1567
1          comp1          opisanie        03.01.2017                145               367
1          comp1          opisanie        03.01.2017                45                 57


Должно получиться:
Инв.№   Имя компьютера    Описание        Дата активности     Активное время      Общее время
1          comp1          opisanie        01.01.2017                369              634
2          comp2          opisanie2       02.01.2017                69               1621
1          comp1          opisanie        03.01.2017                190              424


Группировка должна быть по дате. Т.е. сумма всего активного времени за каждые день у каждого компьютера.
22 апр 17, 12:27    [20424709]     Ответить | Цитировать Сообщить модератору
 Re: Создание представления  [new]
Massa52
Member

Откуда:
Сообщений: 379
Vladsn07,
SELECT 
    MIN(c.FriendlyName) 'Инв. №',
    MIN(c.ComputerName) 'Имя компьютера',
    MIN(o.Description) 'Описание',
    s.Logdate 'Дата активности',
    SUM(s.ActivityTime) 'Активное время',
    SUM(s.ForegroundTime) 'Общее время' 
FROM we_SummaryActivities s 
 	  LEFT JOIN we_Computers c on c.ComputerId=s.ComputerId
	  LEFT JOIN we_OrgUnits o ON o.OrgUnitId=c.ParentId
GROUP BY s.Logdate

MIN или MAX - на ваше усмотрение
22 апр 17, 13:10    [20424782]     Ответить | Цитировать Сообщить модератору
 Re: Создание представления  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Представление создаётся командой CREATE VIEW, а не SELECT
22 апр 17, 14:18    [20424888]     Ответить | Цитировать Сообщить модератору
 Re: Создание представления  [new]
Massa52
Member

Откуда:
Сообщений: 379
iap,
Я понял так - что под представлением автор имеет ввиду выборку.
22 апр 17, 14:29    [20424906]     Ответить | Цитировать Сообщить модератору
 Re: Создание представления  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
Massa52
Vladsn07,
SELECT 
    MIN(c.FriendlyName) 'Инв. №',
    MIN(c.ComputerName) 'Имя компьютера',
    MIN(o.Description) 'Описание',
    s.Logdate 'Дата активности',
    SUM(s.ActivityTime) 'Активное время',
    SUM(s.ForegroundTime) 'Общее время' 
FROM we_SummaryActivities s 
 	  LEFT JOIN we_Computers c on c.ComputerId=s.ComputerId
	  LEFT JOIN we_OrgUnits o ON o.OrgUnitId=c.ParentId
GROUP BY s.Logdate

MIN или MAX - на ваше усмотрение


Очень странно запрос работает, выводит очень мало данных и
c.FriendlyName, c.ComputerName, o.Description выводятся по разному
и данных очень мало, из всего числа около 1-2 % только данных выводятся
22 апр 17, 16:44    [20425108]     Ответить | Цитировать Сообщить модератору
 Re: Создание представления  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Vladsn07
Massa52
Vladsn07,
SELECT 
    MIN(c.FriendlyName) 'Инв. №',
    MIN(c.ComputerName) 'Имя компьютера',
    MIN(o.Description) 'Описание',
    s.Logdate 'Дата активности',
    SUM(s.ActivityTime) 'Активное время',
    SUM(s.ForegroundTime) 'Общее время' 
FROM we_SummaryActivities s 
 	  LEFT JOIN we_Computers c on c.ComputerId=s.ComputerId
	  LEFT JOIN we_OrgUnits o ON o.OrgUnitId=c.ParentId
GROUP BY s.Logdate


MIN или MAX - на ваше усмотрение


Очень странно запрос работает, выводит очень мало данных и
c.FriendlyName, c.ComputerName, o.Description выводятся по разному
и данных очень мало, из всего числа около 1-2 % только данных выводятся
Вы вообще не вдумываетесь в то, что пишите?

Замените
    MIN(c.FriendlyName) 'Инв. №',
    MIN(c.ComputerName) 'Имя компьютера',
на
    c.FriendlyName 'Инв. №',
    c.ComputerName 'Имя компьютера',
и добавьте их в GROUP BY
22 апр 17, 19:55    [20425406]     Ответить | Цитировать Сообщить модератору
 Re: Создание представления  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
alexeyvg

Замените
    MIN(c.FriendlyName) 'Инв. №',
    MIN(c.ComputerName) 'Имя компьютера',
на
    c.FriendlyName 'Инв. №',
    c.ComputerName 'Имя компьютера',
и добавьте их в GROUP BY

Не знаю даже, что ответить. Вроде правильно пока выводит сумму по дням
22 апр 17, 22:28    [20425626]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить