我有一个表格,我对其进行查询并得到如下结果:
-----------------------------------------------------------------------------------------------
Account January February March April May June July August September October November December
-----------------------------------------------------------------------------------------------
1234 0 50 100 0 0 0 120 280 800 0 650 124
-----------------------------------------------------------------------------------------------
如何转换此查询以显示如下数据:
------------------------
Account Period Amount
-------------------------
1234 Jan 0
1234 Feb 50
1234 Mar 100
.
.
1234 Dec 124
--------------------------
我会创建一个视图,存储过程或其他东西吗? (原谅我缺乏知识,因为我不是真正的DBA,但需要找到一个解决方案来帮助解决这个问题。)
答案 0 :(得分:1)
您可以使用以下查询显示它:
SELECT Account, 'Jan' as Period, January as Amount
FROM myTable
UNION ALL
SELECT Account, 'Feb' as Period, February as Amount
FROM myTable
UNION ALL
...
答案 1 :(得分:1)
如果您使用的DBMS支持,则可以使用unpivot。
这样的事情:
select U.Account,
U.Period,
U.Amount
from
( -- Your query goes here
select
1234 as Account,
0 as Januar,
50 as February,
100 as March
) as T
unpivot
(
Amount for Period in (Januar, February, March)
) as U
结果:
Account Period Amount
----------- ---------- -----------
1234 Januar 0
1234 February 50
1234 March 100
答案 2 :(得分:0)
我认为如果您的数据库支持它,那么上面的unpivot答案可能是最好的...但我感觉您的原始查询可以通过一个简单的“分组依据”进行修改
select ..
from <table>
where Account = '1234'
group by Account, Period