首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL - CASE WHEN查询

SQL - CASE WHEN查询
EN

Stack Overflow用户
提问于 2017-01-16 07:51:03
回答 2查看 58关注 0票数 1

我试图从我的表中获得过去12个月内花费超过1000美元的客户的所有发票。下面是我的表格,仅针对两个客户作为示例:

我的问题是:

代码语言:javascript
运行
复制
SELECT 
    t.Customer, t.Invoice 
FROM 
    (SELECT
         CI.Customer, CI.Invoice, CI.Date,
         SUM(CASE 
                WHEN CI.Date > DATEADD(month, -12, getdate()) 
                   THEN CI.Valuee 
                ELSE 0 
             END) as Net
     FROM 
         CustomerInvoice CI
     GROUP BY 
         CI.Customer, CISRV.Invoice, CISRV.Date) AS t
GROUP BY 
    t.Customer, t.Invoice
HAVING 
   SUM (t.Net) > 1000

因此,我将只得到发票INV-341453,但我想也显示发票INV-346218和INV-349065。

我做错了什么?

EN

Stack Overflow用户

发布于 2017-01-16 08:11:37

为此,您可以使用分组查询来识别超过1000阈值的客户,然后显示这些客户的所有发票:

代码语言:javascript
运行
复制
SELECT Customer, Invoice 
 FROM CustomerInvoice 
 WHERE Customer IN 
     (SELECT Customer 
     FROM CustomerInvoice
     GROUP BY Customer
     HAVING SUM(CASE WHEN CI.Date>DATEADD(month,-12,getdate()) THEN CI.Valuee ELSE 0 END) > 1000)
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41667655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档