0

我正在使用 sql 将一个相当复杂的数据库引用到 excel 中。有一个表,每个实例有 4 行,我已经设法在我的 excel 表中的同一实例上使用以下方法使它们成为 4 列:

Max( case when(table1.column1 = 'a') Then table1.column2 Else 0 End) as [A],

Max( case when(table1.column1 = 'b') Then table1.column2 Else 0 End) as [B],

Max( case when(table1.column1 = 'c') Then table1.column2 Else 0 End) as [C],

Max( case when(table1.column1 = 'd') Then table1.column2 Else 0 End) as [D]

在代码的 SELECT 部分。

现在我需要将所有 4 个已创建列的值添加到我可以引用的第 5 列中,但我一直遇到问题。我最初只是尝试了 Total = 'A' + 'B' + 'C' + 'D' 但这只是给了我一个每行都带有“ABCD”的文本列,而不是在列中添加值。我已经验证了创建列中的值是数字。

我基本上是在寻找一种方法来使用在其他列中使用 AS 命令创建的列名作为公式的一部分。

4

2 回答 2

0

没关系,我想通了...

Total = (Max( case when(table1.column1 = 'a') Then table1.column2 Else 0 End)) + (Max( case when(table1.column1 = 'b') Then table1.column2 Else 0 End)) + (Max( case when(table1.column1 = 'c') Then table1.column2 Else 0 End)) + (Max( case when(table1.column1 = 'd') Then table1.column2 Else 0 End))

我只需要删除命名新列的 4 个 AS 命令,因为我实际上并没有尝试在等式中包含列名。谢谢你们的帮助!

于 2015-10-13T18:06:51.413 回答
0

两种方式,短的和长的。

短一:

SUM(table.column2) as 5thElement

长一:

Max( case when(table1.column1 = 'a') Then table1.column2 Else 0 End) +
Max( case when(table1.column1 = 'b') Then table1.column2 Else 0 End) +
Max( case when(table1.column1 = 'c') Then table1.column2 Else 0 End) +
Max( case when(table1.column1 = 'd') Then table1.column2 Else 0 End)

祝你好运!

于 2015-10-13T17:30:15.637 回答