我需要为三个表提取数据,左表需要始终显示在“位置”中调用的行。我的问题是,由于有三张桌子,我无法让它工作。我已经疯狂地尝试连接,它只在做两个表时有效,但是一旦我得到第三个它就不起作用,它只会显示所有三个表中不为空的行。我需要能够在第一个表中显示指定的 ID,无论其他两个表对于指定的 ID 是否完全为空
我有一个数据库,我只有读取权限,所以改变它的结构是行不通的。下面是我的 SQL 代码,它可以正常工作以获取我想要的数据,但有一个 ID 没有显示,因为它没有指定日期的数据。
select
[User].Id,
[User].Name,
convert(float,round(sum(SalesOrderJournalDetail.Price*SalesOrderJournalDetail.Shipped),2)) as 'Sales Yesterday',
convert(float,round(sum(SalesOrderJournalDetail.ActualCost*SalesOrderJournalDetail.Shipped),2)) as 'Cost Yesterday',
count(distinct(SalesOrderJournalDetail.SalesOrderId)) as 'Orders Yesterday',
count(SalesOrderJournalDetail.SalesOrderId) as 'Lines Yesterday',
convert(float,UserTotal.SalesMTD,2) as 'Sales MTD',
round(convert(float,UserTotal.CostMTD,2),2) as 'Cost MTD'
from
[User], UserTotal, SalesOrderJournalDetail
where
[User].Id in (' 725',' 150',' 239',' 225',' 209',' 227',' 222',' 232',' 241',' 215',' 214',' 722',' 134',' 201',' 238',' 721','M104',' 244',' 245',' 104')
and convert(varchar(10),SalesOrderJournalDetail.InvoiceDate,111) = '2012/04/19'
and [User].Id=SalesOrderJournalDetail.SalesPersonUserId
and SalesOrderJournalDetail.SalesPersonUserId=UserTotal.UserId
group by [User].Id, [User].Name, SalesOrderJournalDetail.SalesPersonUserId, UserTotal.UserId, UserTotal.SalesMTD, UserTotal.CostMTD
order by [User].Name
为了帮助解释结构,[User] 表显示用户的 ID 号和名称,SalesOrderJournalDetail 表显示当天的销售额,UserTotal 表显示每月的销售额数据(通过一些计算)。
我需要从后两个表中显示当天的销售额和每月的销售额,并且需要从第一个表中提取用户的姓名和 ID。
这三个表的唯一数据是 [User].Id、SalesJournalDetail.SalesPersonUserId 和 UserTotal.UserId
无论该用户是否没有日销售额或月销售额,我有什么想法可以让它显示 where cluase 中显示的所有 ID?
哦,这是使用 Microsoft SQL