如何根据Groupby和MS SQL中的某些条件选择数据

时间:2016-12-20 12:21:23

标签: sql sql-server

我想基于自联接从SQL表中获取数据。这是我的例子,可以详细解释这个问题。

表1:

CustNo|State|City|Year2014|Budget2014|Year2015|Budget2015|Year2016|Budget2016
123   |BW   |LA  |2014    |6789.87   |NULL    |NULL      |NULL    |NULL
234   |HH   |SS  |2014    |877.67    |NULL    |NULL      |NULL    |NULL
123   |BW   |LA  |NULL    |NULL      |2015    |8789.87   |NULL    |NULL
234   |HH   |SS  |NULL    |NULL      |2015    |569.45    |NULL    |NULL

从上面的输入我想要以下输出:

CustNo|State|City|Year2014|Budget2014|Year2015|Budget2015|Year2016|Budget2016
123   |BW   |LA  |2014    |6789.87   |2015    |8789.87   |NULL    |NULL
234   |HH   |SS  |2014    |877.67    |2015    |569.45    |NULL    |NULL

正如我们所看到的,每年只有特定客户Budget字段的值发生变化。我想为一个客户一行获取记录。 我不知道如何才能得到这样的输出。

1 个答案:

答案 0 :(得分:1)

您可以使用group by执行此操作。这是一种方法:

select CustNo, State, City,
       max(Year2014) as year2014,
       sum(Budget2014) as Budget2014
       max(Year2015) as year2015,
       sum(Budget2015) as Budget2015,
       max(Year2016) as year2016,
       sum(Budget2016) as Budget2016
from t
group by CustNo, State, City;