将特定数据值放入一行的最佳方法是什么?

时间:2018-10-04 03:11:44

标签: sql sql-server ssms

我正在处理一个使用大量表的查询。我试图捕捉的一些价值观将需要我做一些额外的工作。

我要捕获的基本字段直接来自表格。简单。但是,我需要的某些字段需要其他编码。

例如,我需要找到客户为特定产品支付的金额。因此,我需要在每个字段的WHERE语句中添加产品类型名称。

我知道我可以对每个子查询使用子查询,但是我将需要在这些子查询中的每个子查询上连接至少4个不同的表,然后添加2个WHERE语句:一个将数据链接到主查询,另一个具体选择我要选择的产品。

我的问题是,从性能角度来看,最好的方法是什么?我应该执行一堆子查询,还是为每个产品使用临时表,然后在查询结束时使用左联接将它们组合在一起?

很抱歉,我没有任何代码可发布此问题。我现在无法访问我的计算机。

1 个答案:

答案 0 :(得分:0)

这是一个示例查询,我认为会根据一些注释并基于完全组成的表来回答您要执行的操作:

select customerid, customername, 
    sum(case when producttype='shoes' then salesvalue else 0 end) as ShoeValue,
    sum(case when producttype='tshirt' then salesvalue else 0 end) as TShirtValue
from customer
join sales on sales.customerid=customer.customerid
group by customerid, customername