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/

相关文章:

sql-server-2008 - Sql Server 2008 调整大事务(700k+ 行/事务)

SQL:引用 2 个表的触发器

mysql - 如何根据多个排序列选择每组的第一行?

sql - 如果 count(values) > 1,则将所有值合并到一个单元格中

sql - 如何从复合主键表中选择不同的

sql - 如何将数据库从单用户模式更改为多用户模式

sql - PostgreSQL array_agg 但有停止条件

php 登录系统 - 登录不起作用

sql-server - SQL Server Mgmt Studio 搞乱了我的数据库!

sql-server-2008 - 使用 SSDT Publish (.dacpac) 部署非空外键架构更新