我想基于自联接从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
字段的值发生变化。我想为一个客户一行获取记录。
我不知道如何才能得到这样的输出。
答案 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;