正确的MIN,MAX和CASE语句

时间:2011-09-30 11:15:14

标签: sql tsql sql-server-2008

我喜欢从同一列中提取MIN和MAX值。因为我正在使用Group By所以我必须使用min和max。如果我只是使用整个列,它会给我一个错误,你必须使用Group By

的聚合函数

我该怎么做

ValueA = MAX(ValueB)+ MIN(ValueB)

什么是正确的语法?

任何?

,第二个问题是

如何在这种情况下使用2个案例陈述

select

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

From TableA

使用上面的2个案例语句给我2列,我想要1列 再加上第二个案例陈述我刚刚编写了我想要的算法

如何修复此代码?

4 个答案:

答案 0 :(得分:1)

你是说这个吗?:

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

答案 1 :(得分:0)

在select子句中添加你想要分组的列名。我认为它有效,而不是给出错误

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

答案 2 :(得分:0)

问题1: 取决于该group by子句。请粘贴您正在使用的实际代码。 如果您想为每个columnX使用每个ValueB,请将其添加到您的组中,即     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

答案 3 :(得分:0)

你的意思是CASE吗?

  SELECT ValueA,

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

  CASE
  when ValueE IS NULL THEN ''  
  END AS ValueD

很难准确理解您的需求。您能否添加您拥有的数据(多行)以及您希望获得的输出? 大多数人不喜欢数据的图像,但总比没有好。 :-)谢谢!