sql - 情况当不同的值然后求和另一个值?

标签 sql sql-server sql-server-2008 tsql

小 pig 回避了我昨天遇到的另一个问题。

我想知道如何计算amt> 1500的记录的不同数量。以我的数据联接的方式,我可以多次反射(reflect)相同的PKey AcctNo,因为我的完整外部联接到另一个具有多个交易记录。

(Case When AcctNo_PKey = distinct then sum(case when amount > 1500 then 1 else 0 end)
 else 0) end as GT1500

这是我当前的代码,可以产生理想的结果。一世
SELECT sum(case when amount > 1500 then 1 else 0 end) as GT1500
     , sum(case when amount < 1500 then 1 else 0 end) as LT1500
    , DATEPART(Year, amount.Date) Deposit_Year
    , DATEPART(QUARTER, amount.Date) Deposit_Qtr 
From account 
full outer JOIN amount ON account.AcctNo = amount.AcctNo
group by DATEPART(Year, amount.Date)
    , DATEPART(QUARTER, amount.Date)

也许我的整个方法是错误的... idk

最佳答案

您可以在COUNT(DISTINCT )表达式的输出上使用CASE。例如,要计算聚合结果中某处具有AcctNo_Pkey行的不同[amount] < 1500的数量,可以使用以下方法:

COUNT(DISTINCT CASE WHEN [amount] < 1500 THEN AcctNo_PKey END)

您可以在行动中看到in this minimal sqlfiddle example

关于sql - 情况当不同的值然后求和另一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25687345/

相关文章:

mysql - 查找过去 24 小时内具有日期字段的记录

php - 获取相同日期的两个表的记录

java - Spring 数据JPA : filter data based on used ManyToOne field

sql-server - 我想编写一个通用存储过程来将数据插入数据库的任何表中

sql-server - 在 'LIKE' 运算符(operator)需要选择 'NULL' (DB) 值

sql-server-2008 - SQL Server 本地化

sql - 如何在 SQL Server 中为多列使用东西函数?

mysql - 以日历季度为列分组

SQL服务器: Linked-servers without linking servers?

java - 无法使用我的选择查询从 SQL Server 获取数据(使用 jdbc 驱动程序)