首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择一行到多行,行有另一个计算

选择一行到多行,行有另一个计算
EN

Stack Overflow用户
提问于 2019-09-27 08:18:58
回答 1查看 50关注 0票数 0

我有一个表Allowance (名称,价值,日期,津贴)

我有许多行值,用一个“名称”,我选择两个名称

我写信给下面的脚本

代码语言:javascript
复制
select s.name, coalesce(v.name, s.name) AS 'Name1'
from Allowance s left join
     (values ('A', 'Allowance1'),
             ('A', 'Allowance2')
     ) v(old_name, name)
     on v.old_name = s.name

和结果:

代码语言:javascript
复制
 Name|  Name1       | Value    | Date
-----+--------------+----------+---------
 A   |  Allowance1  |          | 2019-01-01
 A   |  Allowance2  |          | 2019-01-01

对于列Name1的值有其他计算(Value列) Ex:

代码语言:javascript
复制
With Allowance1: I have a script
select sum(value) from Allowance where Allowance='1' group by Name
Result: 145

With Allowance2: I have a script
select sum(value) from Allowance where Allowance='1' or Allowance='2' group by Name

Result: 123

如何选择下面的结果?

代码语言:javascript
复制
 Name|  Name1       | Value    | Date
-----+--------------+----------+---------
 A   |  Allowance1  |    145   | 2019-01-01
 A   |  Allowance2  |    123   | 2019-01-01

请帮我解决问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-27 11:53:05

我想你想要这样的东西:

代码语言:javascript
复制
select s.name, coalesce(v.name, s.name) AS Name1, v.value
from (select name,
             sum(case when Allowance in (1) then value end) as value_1,
             sum(case when Allowance in (1, 2) then value end) as value_2
      from Allowance s
      group by name
     ) s left join
     (values ('A', 'Allowance1', value_1),
             ('A', 'Allowance2', value_2)
     ) v(old_name, name, value)
     on v.old_name = s.name
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58130545

复制
相关文章

相似问题

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