Sql server 根据t-SQL中的特定条件排除特定行

Sql server 根据t-SQL中的特定条件排除特定行,sql-server,tsql,Sql Server,Tsql,首先,我创建了以下stock sales SELECT语句: SELECT PostST.TxDate AS TxDate, PostST.Reference AS InvNum, Client.Name AS CustomerName, SalesRep.Code AS SalesRep, WhseMst.Code AS Whse, CONCAT (StkItem.Description_1, ' - ',StkItem.Code) AS Item, _etblLotTracking.cLot

首先,我创建了以下stock sales SELECT语句:

SELECT
PostST.TxDate AS TxDate,
PostST.Reference AS InvNum,
Client.Name AS CustomerName,
SalesRep.Code AS SalesRep,
WhseMst.Code AS Whse,
CONCAT (StkItem.Description_1, ' - ',StkItem.Code) AS Item,
_etblLotTracking.cLotDescription AS LotNumber,
CASE 
    WHEN PostST.TrCodeID = 34 THEN (PostST.Quantity * 1)
    WHEN PostST.TrCodeID = 30 THEN (PostST.Quantity * -1)
    ELSE 0 
    END AS QtySold,
CAST 
    (
CASE
    WHEN PostST.TrCodeID = 34 THEN (PostST.Credit / PostST.Quantity)
    WHEN PostST.TrCodeID = 30 THEN (PostST.Debit / (PostST.Quantity * -1))
    ELSE 0
    END 
    as [money] 
    )
    AS CustomerPrice,
StkItem.ItemGroup AS ItemGroup,
StkItem.ulIIStockType AS StockType, 
YEAR (PostST.TxDate) AS Year,
DATENAME (MONTH, (PostST.TxDate)) AS Month

FROM 
PostST
INNER JOIN StkItem
    ON StkItem.StockLink = PostST.AccountLink
INNER JOIN PostAR
    ON PostAR.cAuditNumber = PostST.cAuditNumber
INNER JOIN Client
    ON Client.DCLink = PostAR.AccountLink
INNER JOIN SalesRep
    ON SalesRep.idSalesRep = PostAR.RepID
INNER JOIN WhseMst
    ON WhseMst.WhseLink = PostST.WarehouseID
FULL JOIN _etblLotTracking
    ON _etblLotTracking.idLotTracking = PostST.iLotID

WHERE 
PostST.TrCodeID IN (34, 30) AND  StkItem.ItemGroup <> 'TRAN'
选择
PostST.TxDate作为TxDate,
PostST.引用为InvNum,
客户。名称为CustomerName,
SalesRep.代码为SalesRep,
WhseMst.代码为Whse,
CONCAT(标准描述1,'-',标准代码)作为项目,
_etblLotTracking.cLotDescription作为LotNumber,
案例
当PostST.TrCodeID=34时,则(PostST.Quantity*1)
当PostST.TrCodeID=30时,则(PostST.Quantity*-1)
其他0
以QtySold结束,
铸造
(
案例
当PostST.TrCodeID=34时,则(PostST.Credit/PostST.Quantity)
当PostST.TrCodeID=30时,则(PostST.Debit/(PostST.Quantity*-1))
其他0
结束
作为[金钱]
)
作为客户价格,
StkItem.ItemGroup作为ItemGroup,
StkItem.uliStockType作为StockType,
年份(后TxDate)作为年份,
DATENAME(月份,(PostST.TxDate))作为月份
从…起
波斯特
内连接结构
在StkItem.StockLink=PostST.AccountLink上
内连接邮递员
PostAR.cAuditNumber=PostST.cAuditNumber
内部连接客户端
在Client.DCLink=PostAR.AccountLink上
内部连接销售代表
在SalesRep.idSalesRep=PostAR.RepID上
内连接WhseMst
在WhseMst.WhseLink=PostST.WarehouseID上
完全联接
ON_etblLotTracking.idLotTracking=PostST.iLotID
哪里
PostST.TrCodeID IN(34,30)和StkItem.ItemGroup'TRAN'
此查询从Sage Evolution运行,数据转储到Excel中。从那里我可以查看每个项目以及每月和每年的销售历史

我的问题如下:

在下面的数据中,有时是一位可能已停止购买某一特定商品的客户。我需要的是,此语句还根据以下条件过滤掉一行:

如果客户在6个月或更长时间内没有销售,则必须为该特定客户筛选该库存项目


谢谢大家!

请准备样品数据和预期结果。提供准确答案会容易得多。Hi@lad2025我添加了一个屏幕截图,显示数据如何与当前语句一起列出。我需要的是,如果说客户Sweet先生在6个月或更长时间内没有购买甘草,它一定不能显示这一行。这是一个简单的编程问题。您知道SQL中可以在WHERE子句中使用的EXISTS()函数吗?如果没有,请谷歌和了解它。首先,请不要张贴实际数据(客户名称,财务,…),这是非常不专业的。第二个演示(使用虚拟数据)将比图像更有帮助。@TabAlleman我不知道它没有,但我会在Google上进行一些研究,看看这个函数是否有帮助。谢谢