我目前正在计算一个更大的一组数据与一些联接和最终的结果是跨两个表的计算。我的当前脚本如下所示:复杂的计算 - SQL Server
USE db1
Go
SELECT
customer, tb1.custid
FROM
[dbo].[tb1]
LEFT OUTER JOIN
[dbo].[tb2] ON tb1.custid = tb2.custid
LEFT OUTER JOIN
[dbo].[tb3] ON tb2.custnumber = tb3.custnumber
LEFT OUTER JOIN
[dbo].[tb4] ON tb2.custid = tb4.custid
WHERE
tb1.custclass = 'non-person'
AND tb4.zip IN ('11111', '11112')
GO
正如您所看到的,它不是最干净的,但它用于收集初始信息。连接数量的原因是由于我没有创建一个令人难以置信的奇怪表格结构,而且我需要的数字数据只存储在tb3中。
我现在要做的是计算tb3中所有设置为数字字段的3个字段的总和,并对第4个字段(也是数字)进行AND/OR比较。我知道我可以将它们汇总在一起,但我希望在三件事情上进行一些输入:
- 何处将SUM计算置于查询中?
- 在哪里放置以及如何将SUM总数与第4场进行比较?
- 是否有可能将两个值中较高的值返回到初始SELECT中的TOTAL列?
在此先感谢您。
一次做一件事。从一个简单的总和开始。你在哪里可以放置哪些选项? –
将数据分散在多个表中并不罕见。但在加入多个表格时请小心谨慎:如果您在t4中有三条匹配的记录,则可以将t3数据重复三次。另外:你确定你需要外部连接吗?最后一个甚至不起作用,因为您比较WHERE子句中的t4值,而不考虑在外连接记录的情况下该值为空。如果您确实需要外连接,则可能需要将该条件移至ON子句。 –