Создать представление с уникальным ключом и группировать по нескольким параметрам - PullRequest
0 голосов
/ 10 мая 2019

Я создавал представление с этим оператором

SELECT  
    CAST(tt.DateTimeScanned as date) AS ForDate,
    DATEPART(hour,tt.DateTimeScanned) AS OnHour,
    COUNT(*) AS Totals
FROM 
    Transaction_Tickets tt
WHERE 
    tt.TicketId = 156 AND IsCancelled = 0 AND IsScanned = 1
GROUP BY 
    CAST(tt.DateTimeScanned as date),
    DATEPART(hour,tt.DateTimeScanned)

Текущий вывод

ForDate      OnHour    Totals
-------------------------------
2019-05-05   10        2021
2019-05-05    7         323
2019-05-05   13         692
2019-05-04   15         373
2019-05-05   16         230
2019-05-05   19           3

Однако у него нет уникального столбца, поэтому, когда я сохраняю его какпри просмотре и обновлении моей модели в моем проекте MVC он не применяет мой новый созданный вид, поскольку у него нет правильного ключа.

При просмотре дизайна других моих рабочих видов я увидел этот первичныйсимвол ключа

enter image description here

При просмотре этого вновь созданного представления выдает эту ошибку

enter image description here

Таким образом, мой вопрос заключается в том, как мне добиться включения уникального ключа в мое представление, не влияя на положение группы по выражению?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 10 мая 2019

Я бы добавил номер строки к вашему виду. Вы можете изменить предложение ORDER BY, я просто предполагаю, что вы хотите использовать вашу дату.

SELECT  
   ROW_NUMBER() OVER(ORDER BY CAST(tt.DateTimeScanned as date)) AS MyRowNumber,
   CAST(tt.DateTimeScanned as date) AS ForDate,
    DATEPART(hour,tt.DateTimeScanned) AS OnHour,
    COUNT(*) AS Totals
FROM Transaction_Tickets tt
where tt.TicketId = 156 and IsCancelled = 0 and IsScanned = 1
GROUP BY CAST(tt.DateTimeScanned as date),
   DATEPART(hour,tt.DateTimeScanned)
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...