我被这个问题困扰了好几天,仍然想不出解决办法。也许我只是把它弄得太复杂了。我的问题是这样的。
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
;
查询应显示不同的日期,并应显示在特定日期获得的总金额。如你所见,仍然有匹配的日期
编辑。我不知道我是否正确理解这些批评,但我运用了这些变化。
选择distinct cast(tabl1.date as date)作为'date',concat(round(sum((isnull(price.morning,0)+isnull(price.day,0)+isnull(price.nighten,0))*tickets.count),2),'€') 作为表1中的“总计”,按日期加入tickets.table1\u id=table1.table1\u id加入tickets.price\u id=price.price\u id分组;
我也明白我需要提供更多的信息来解决这个问题。所有的..concat(round(sum((isnull(price.morning,0)+isnull(price.day,0)+isnull(price.nighten,0))*票数),2),'€') 作为“总计”。。是必需的,因为在数据库中有空值š 为什么在那里我使用isnull函数,如果它为null,则使用0,否则它会停止所有计算。您可以在此处看到该表:我编辑了列名,以便您可以看到(表本身使用不同的语言)(此操作不需要没有名称的列)
1条答案
按热度按时间zyfwsgd61#
使用显式联接而不是分隔旧联接方法,并使用子查询作为total的格式。不需要区分