我有一个数据集可以返回卖家列表以及他们每次销售的平均价格。
我需要过滤此数据集,因此它只显示销售这两种产品类型的卖家。我试图对它进行分组,这使我对所有选择元素进行分组,并且不会返回任何内容。
以下是我目前使用的查询。
SELECT [Agent] ,
Contract ,
QPivot.[1] AS Q1 ,
QPivot.[2] AS Q2 ,
QPivot.[3] AS Q3 ,
QPivot.[4] AS Q4
FROM ( SELECT c.sagent_number [Agent] ,
YEAR(c.dtcontract_entered) [Year] ,
CASE WHEN c.scontract_no LIKE '%zm%' THEN 'Product 2'
WHEN c.scontract_no LIKE '%dap%' THEN 'Product 1'
WHEN c.scontract_no LIKE '%v0%' THEN 'Product 1'
ELSE NULL
END [Contract] ,
DATEPART(QUARTER, c.dtcontract_entered) [Quarter] ,
AVG(c.cretail_rate - c.cnet_rate) [AVG Sales]
FROM scs_contracts c
WHERE c.iproduct_type_id = 4
AND c.sstatus IN ('P', 'A', 'C', 'E')
GROUP BY c.sagent_number ,
YEAR(c.dtcontract_entered) ,
CASE WHEN c.scontract_no LIKE '%zm%' THEN 'Product 2'
WHEN c.scontract_no LIKE '%dap%' THEN 'Product 1'
WHEN c.scontract_no LIKE '%v0%' THEN 'Product 1'
ELSE NULL
END ,
DATEPART(QUARTER, c.dtcontract_entered)
) AS QuarterlyData PIVOT( AVG([AVG Sales]) FOR Quarter IN ( [1], [2], [3], [4] ) ) AS QPivot
WHERE Contract IS NOT NULL
AND Year = 2016
AND [Agent] <> '2'
AND [Agent] <> '3'
ORDER BY [QPivot].[Agent], QPivot.Contract asc
以下是返回数据的示例:
我正在尝试过滤掉仅售出单品的卖家。所有销售产品1和产品2的卖家都想留在数据集中。这可能吗?
不应出现以颜色突出显示的图像。我已经尝试将它包装成一个选择,我尝试过分组。我确定它必须以某种方式存在。我曾试图以某种方式对[Agent]进行计数,但如果没有对每个选择列进行分组,我都无法进行计数。我此刻不知所措。
答案 0 :(得分:1)
您可以将QPIVOT作为临时表,然后检查是否存在其他产品:
...
SELECT [Agent] ,
Contract ,
Q1 ,
Q2 ,
Q3 ,
Q4
FROM #QPIVOT
WHERE EXISTS
(
SELECT 1 FROM #QPIVOT QP2 where QP2.AGENT=#QPIVOT.AGENT AND QP2.Contract<>#QPIVOT.Contract)
ORDER BY [Agent],Contract asc