0

前言:我有一个查询,可以根据他们的目标提取销售数据和措施。问题是只有售出商品的人才会出现在给定月份的图表上。最终,每个人​​都获得了销售并登上了排行榜。为了缓解这个问题,我创建了第二条语句,它分配了一个虚拟的数据行(用作占位符)并将 datepart(M, SOLD_DATE) = 设置为 datepart(M, getdate()) 以便从第一个开始在板上。

我的问题:当人们被添加到董事会时,如何设置它以删除占位符?

SELECT
    USER_ID,
    SOLD_DATE,
    DATEPART(M, SALE_ID)
    **Target Case Statement in a nutshell**:
    insert monthly target value to 1st instance of sold item
    else 0
    End as 'target_amt' -- this is summed and aggregated in excel chart.
FROM 
   Sales

UNION ALL

SELECT    
    USER_ID,
    DATEPART(M, getdate()) as SOLD_DATE,
    Sale_ID,
    TARGET_AMT,
FROM 
    Sales
WHERE
    Sale_ID = **this contains on made up sale_id per person as a place holder.

因此,您可以看到,截至每月 1 日,该UNION语句为每个人添加了一个项目。现在,当有人进行销售时如何将其删除是一个问题。

我正在考虑某种带有“不在”或“除外”的子查询。或者可能涉及案例陈述的事情???

我会发布完整的查询,但它是一个野兽(8 页),并使用一些 CTE 来派生顶部选择语句。

4

2 回答 2

1

您应该从您的用户表中选择并针对您的销售表左连接。通过这样做,它解决了用户在没有卖东西时没有出现的原始问题。

于 2014-08-04T20:53:03.310 回答
0

我同意 SpectralGhost 的观点 - 解决此问题的最佳方法是更改​​原始查询的选择标准,使其包含两个表的连接 - 没有销售的人将显示空条目。

但是,如果您想以艰难的方式进行操作,那么在添加其他销售记录时,一个简单的 if exists 就足以检查和删除虚拟记录。或者您的意思是说在添加销售的语句中应该检查、添加虚拟记录或删除虚拟记录(如果它们已经存在但正在添加销售)?好像想把一根绳子推给我。

于 2014-08-05T01:03:55.720 回答