2015-10-13 30 views
0

我使用sql将一个相当复杂的数据库引用到excel中。有一个表,每个实例有4行,我已经设法使他们在我的Excel表中使用相同的实例4列:用as命令创建了4列,现在需要添加所有4列

最大(案件时(table1.column1 ='a')然后table1.column2否则为0完)作为[A],

MAX(情况下,当(table1.column1 = 'b')然后table1.column2否则为0完)作为[b],

MAX(情况下(表1。列1 = 'C')。然后table1.column2否则0完)作为[C],

MAX(情况下,当(table1.column1 = 'd')然后table1.column2否则0完)为[d]

代码的SELECT部分​​中的

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

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

+0

如果在每个字母周围没有单引号的情况下使用“A + B + C + D”会发生什么?或者'[A] + [B] + [C] + [D]'......我不知道这是否会奏效,但我很好奇。 – JNevill

+0

A + B + C + D作为'Total'给了我一个关于+的语法错误。 并使用它们周围的[]给我提供无效的列名'A' 无效的列名'B' 无效的列名'C' 无效的列名'D' – mcunkelman

回答

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) 

祝你好运!

+0

所以短的一个不会引发错误,它给我的价值远离他们应该的。 长的一直给我+ +符号周围的语法错误... – mcunkelman

+0

请分享整个查询。 – GSazheniuk

0

没关系我计算出来...

总共=(MAX(情况下,当(table1.column1 = 'A')然后table1.column2否则0完))+(MAX(情况下(表1。 (table1.column1 ='c')then table1.column2 Else 0 End))+(Max(case when(table1.column1 ='b')then table1.column2 Else 0 End))+ 'd')Then table1.column2 Else 0 End))

我只是不得不删除命名新列的4个AS命令,因为我实际上并未尝试在列表中包含列名。谢谢你们的帮助!