Выберите отличное шоу - PullRequest
0 голосов
/ 07 ноября 2018

Я застрял с этой проблемой в течение нескольких дней и до сих пор не могу придумать решение. Может быть, я просто делаю это слишком сложным. Так что мой запрос выглядит следующим образом.

SELECT distinct Cast(Table1.Date as Date) AS 'Date', Concat(Round(SUM((ISNULL(Price.Morning,0) + ISNULL(Price.Day,0) + ISNULL(Price.Evening,0))*Tickets.Count),2),' €') AS 'Total' 
FROM Price,Tickets,Table1
WHERE Tickets.Price_ID = Price.Price_ID AND
Tickets.Table1_ID = Table1.Table1_ID
GROUP BY Date
;

В запросе должны отображаться разные даты, и должна отображаться общая сумма, полученная в конкретную дату. Как вы можете видеть, все еще совпадают даты

EDIT. Я не знаю, правильно ли я понял критику, но применил эти изменения.

ВЫБЕРИТЕ различное приведение (Tabl1. Date as Date) AS 'Date', Concat (Round (SUM ((ISNULL (Price.Morning, 0) + ISNULL (Price.Day, 0) + ISNULL (Price.Evening, 0) )) * Tickets.Count), 2), '€') AS 'Total' ИЗ таблицы 1 ПРИСОЕДИНЯЙТЕСЬ К БИЛЕТАМ ПО БИЛЕТАМ ПРИСОЕДИНИТЬСЯ Price ON Tickets.Price_ID = Price.Price_ID GROUP BY Дата ; * +1010 *

И я также понимаю, что мне нужно предоставить больше информации для решения. All ..Concat (Round (SUM ((ISNULL (Цена. Утро, 0) + ISNULL (Price.Day, 0) + ISNULL (Цена. Вечер, 0)) * Tickets.Count), 2), '€' ) AS 'Total' .. Необходим, потому что в базе данных есть значения Null, поэтому там я использую функцию ISNULL и 0, если она NULL, потому что в противном случае она тормозит все вычисления. Вы можете увидеть эту таблицу здесь: Я отредактировал имена столбцов, чтобы вы могли видеть (сама таблица на другом языке) (Для этого столбец без имени не требуется)

1 Ответ

0 голосов
/ 07 ноября 2018

Используйте явное объединение, не разделенное запятой, старый метод объединения и используйте подзапрос для формата итога. Нет необходимости отчетливо

    select 'Date', concat(total,' €') from
   (
    SELECT  Cast(Table1.Date as Date) AS 'Date',  
    SUM(Price.Morning+Price.Day+Price.Evening) as total
    FROM Price join
    Tickets on Tickets.Price_ID = Price.Price_ID
    join Table1 on  Tickets.Table1_ID = Table1.Table1_ID    
    GROUP BY Date
    ) as t
...