gpt4 book ai didi

sql - 如何对同一行中的列求和?

转载 作者:行者123 更新时间:2023-12-02 03:08:58 26 4
gpt4 key购买 nike

我有一个如下表:

id      pymt_no1     pymt_no2      pymt_no3    pymt_no4     pymt_amt1     pymt_amt2       pymt_amt3    pymt_amt4
25 100 5 150 50 60 70 80 90

该表的工作原理是 pymt_no1 对应 pymt_amt1 等...

我想做的是,根据 CASE 语句对 pymt_amt 列进行总计,其中 pymt_no 位于一系列值之间。

例如,我试图获取总 pymt_amt,其中任何 pymt_no 都在 100 到 150 之间。因此,在上表的这种情况下,只有 pymt_no1 和 pymt_no3 的值在 100 到 150 之间,所以我需要对其对应的 pymt_amt 进行总计,因此这里的总计为 140。

我已经尝试了下面的查询,但我的问题是它只提取第一个 pymt_amt 而不是其余的让我添加在一起:

with pymt as (
SELECT
id,
CASE
WHEN pymt_no1 BETWEEN 100 and 150 THEN pymt_amt01
WHEN pymt_no2 BETWEEN 100 and 150 THEN pymt_amt02
WHEN pymt_no3 BETWEEN 100 and 150 THEN pymt_amt03
WHEN pymt_no4 BETWEEN 100 and 150 THEN pymt_amt04
END AS [Amount]
FROM pymt
)


SELECT
id,
SUM(Total) as [Total]
FROM pymt
GROUP BY id

我对上述示例的流程的想法是,例如在 cte 中,它看起来像这样:

id     Amount
25 60
25 80

然后将其存储在 cte 中,我可以对 Amount 列进行求和并按 id 列进行分组以获得正确的总计。

非常感谢任何对此的帮助。

最佳答案

您需要为每列添加大小写

--Sample table and Data 
CREATE TABLE #temp (
id INT ,
pymt_no1 int,
pymt_no2 INT,
pymt_no3 INT,
pymt_no4 INT,
pymt_amt1 INT,
pymt_amt2 INT,
pymt_amt3 INT,
pymt_amt4 INT)

INSERT #temp ( id ,
pymt_no1 ,
pymt_no2 ,
pymt_no3 ,
pymt_no4 ,
pymt_amt1 ,
pymt_amt2 ,
pymt_amt3 ,
pymt_amt4
)
VALUES ( 25 , -- id - int
100 , -- pymt_no1 - int
5 , -- pymt_no2 - int
150 , -- pymt_no3 - int
50 , -- pymt_no4 - int
60 , -- pymt_amt1 - int
70 , -- pymt_amt2 - int
80 , -- pymt_amt3 - int
90 -- pymt_amt4 - int
)



--Solution
with pymt as (
SELECT
id,
CASE WHEN pymt_no1 BETWEEN 100 and 150 THEN pymt_amt1 ELSE 0 END AS AmOUNT1 ,
CASE WHEN pymt_no2 BETWEEN 100 and 150 THEN pymt_amt2 ELSE 0 END AS AmOUNT2 ,
CASE WHEN pymt_no3 BETWEEN 100 and 150 THEN pymt_amt3 ELSE 0 END AS Amount3 ,
CASE WHEN pymt_no4 BETWEEN 100 and 150 THEN pymt_amt4 ELSE 0 END AS Amount4

FROM #temp
)


SELECT
id,
SUM([Amount1] + pymt.AmOUNT2 + pymt.Amount3 + pymt.Amount4) as [Total]
FROM pymt
GROUP BY id

关于sql - 如何对同一行中的列求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58221850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com