2011-09-30 137 views
-1

我喜欢从同一列中提取MIN和MAX值。由于我使用Group By,所以我必须使用min和max。如果我只是用整列,它给我说,你必须使用同组聚合函数通过正确的MIN,MAX和CASE语句

我该怎么办呢

值a = MAX(VALUEB)+ MIN(VALUEB)

错误什么才是正确的语法?

有人吗?

和第二个问题是

我怎么能使用2 case语句像上面给了我2列,而不是使用2 case语句中的情况是这样

select 

ValueA = Case ValueC 
     when ValueB then ValueC 
     else '' 
     End 
     Case ValueD 
     when ValueE is blank then ValueD is also blank 
     END 

From TableA 

,我想1列 加第二种情况声明我只写了我想要的算法

我该如何解决这个问题?

+1

“我喜欢从同一列中提取MIN和MAX值。”那么,我喜欢猫 –

+3

请发布一些示例数据,你想得到的输出,以及迄今为止尝试过的**精确** SQL,这是行不通的。否则,这里的任何人都很难帮助你。 –

+0

对于第二个问题,“CASE ... END,CASE ... END”,你得到2列。一个'CASE ... END',你会得到一列。 –

回答

1

你的意思是这个?:

SELECT 
    MAX(ValueB) + MIN(ValueB) AS ValueA 
FROM 
    tableX 
GROUP BY 
    columnX 
+0

是的,但它不起作用。我可以使用ValueB,因为这是我想要的,但因为我使用Group By,它给我错误,我不得不使用聚合函数。我可以用别的东西替换组吗? – user680865

+1

请发布您产生该错误的代码。你可以编辑你的问题。 –

0

在由ü要分组SELECT子句添加列名。我认为它的工作原理,并没有给出错误

select max(valueB)+min(ValueB)as valueB,columnX from tbl group by columnX 
0

问题1: by子句取决于组。请粘贴您使用的实际代码。 如果您希望每个列的每个值为B,然后将其添加到您的组中,即 group by columnX, ValueB 或者如果您只是想每个ValueB一次。然后 SELECT DISTINCT ValueB from tableX

问题2: 很混乱的描述。举例输入和输出数据。 我最好的猜测是你所要求的,如果B = C,E =“”和d =“”回复C ELSE' 即 SELECT CASE WHEN B = C AND E = '' AND D = '' THEN C ELSE '' END as A FROM tableA

0

你的意思是这样的呢?

SELECT ValueA, 

    CASE 
    when ValueB = ValueA THEN ValueC 
    else '' 
    End as ValueC, 

    CASE 
    when ValueE IS NULL THEN '' 
    END AS ValueD 

很难准确理解你需要什么。您可以添加您拥有的数据(多行)以及您期望得到的输出结果吗?
大多数人不喜欢数据的图像,但这总比没有好。 :-) 谢谢!