【发布时间】:2017-07-14 14:30:42
【问题描述】:
我在编写 SQL 查询以基于类似 ID 组汇总多个余额并显示带有 N 标志的产品的余额时遇到了麻烦。我想我需要使用分区函数或最大函数来执行此操作.
所需的结果位于示例数据集下方的下表中。有人可以解决这个问题吗?
有人知道逻辑可以帮助解决这个问题吗?基本上我需要按 ID 对所有内容进行分组,如果有 N 标志,则将余额滚动到该记录,如果没有标志为 N 的记录,我们只需按 pdct_Type_C 聚合。
选择
客户,
SUM(限制) 限制,
SUM(余额) 余额,
SUM(曝光)曝光,
MAX(CASE WHEN Flag = 'N' THEN Pdct_type_c ELSE NULL END) Pdct_type_c,
ID
FROM 表
GROUP BY 客户,ID
样本数据集
客户 |限制 |余额 |曝光 | Pdct_type_c |旗帜 | ID -------------------------------------------------- ------------------------------ 约翰 | 60,000,000.00| - | 5,000,000|衍生 | N | 2 约翰 | - | 1,000,000.00 | - |外汇 |是 | 2 约翰 | - | 2,000,000.00 | - |集成电路 |是 | 2 约翰 | 1,000,000.00 | 3,000,000.00 | - |数据中心 |是 | 3 约翰 | 1,000,000.00 | 3,000,000.00 | - |数据中心 |是 | 3目前的结果
客户 |限制 |余额 |曝光 | Pdct_type_c |旗帜 | ID -------------------------------------------------- ------------------------------ 约翰 | 60,000,000.00| 3,000,000.00 | 5,000,000|衍生 | N | 2 约翰 | 2,000,000.00 | 6,000,000.00 | - |空 |是 | 3期望的结果
客户 |限制 |余额 |曝光 | Pdct_type_c |旗帜 | ID -------------------------------------------------- ------------------------------ 约翰 | 60,000,000.00| 3,000,000.00 | 5,000,000|衍生 | N | 2 约翰 | 2,000,000.00 | 6,000,000.00 | - |数据中心 |是 | 3【问题讨论】:
-
您需要向我们展示您的尝试。最基本的(假设您的样本代表所有数据)您需要使用
GROUP BY,这是一个相当简单的查询。此外,您不应该将数据作为图片发布。将其作为文本包含在实际问题中。见:stackoverflow.com/help/how-to-ask -
谢谢,我已经发布了一个基本数据集,其中包含我正在寻找的结果。基本上,我希望根据相同的 ID 聚合组,并将余额汇总到该组中的客户端,并带有 flag = 'N' 。
标签: sql-server