选择垂直表到水平表SQL
我有下表:选择垂直表到水平表SQL,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有下表: ------------------------------------------- ID Group myDate Value ------------------------------------------- 1 A 2014-06-01 100 2 A 2014-06-02 200 3 A 2014-06-03 300 4 B 2
-------------------------------------------
ID Group myDate Value
-------------------------------------------
1 A 2014-06-01 100
2 A 2014-06-02 200
3 A 2014-06-03 300
4 B 2014-06-01 50
5 B 2014-06-02 100
6 B 2014-06-03 125
我希望得到以下结果:-------------------------------------------
myDate Value myDate Value
-------------------------------------------
2014-06-01 100 2014-06-01 50
2014-06-02 200 2014-06-02 100
2014-06-03 300 2014-06-03 125
所以我想让它基于组域的水平视图。
有人知道怎么做吗?谢谢。小提琴:
如果您有很多组,则会很麻烦,但如果只有几个组,则为其他组添加必要的案例说明应该不会太难。表中有多少行可能具有相同的日期?总是只有2,或者可能有3、4、5等?组值也是可预测的(A、B、C等)还是变化很大?@BrianDeMilia,实际上只有A、B和C。。但是我想说的可能不止这些。干杯,伙计,这很有效!但需要找出,如果组数超过了这个数,该如何处理。但这不是最好的方法,因为如果列表不断增长,则会使您的代码变得繁琐,因此最好使用pivot:)即使使用pivot,您仍然需要为其他组添加代码,它不是动态的@Haminteu要为其他组添加case语句,只需复制并粘贴已有的case语句,但将A或B更改为C或其他组
select min(case when grp = 'A' then mydate end) as mydate1,
min(case when grp = 'A' then value end) as value1,
min(case when grp = 'B' then mydate end) as mydate2,
min(case when grp = 'B' then value end) as value2
from tbl
group by mydate