【发布时间】:2012-08-07 15:28:27
【问题描述】:
假设我有一个像这样的一维表:
TBL_1
[ Task ][ Entity ][ Timespan ]
[ TASK1 ][ ID1 ][ 3 ]
[ TASK2 ][ ID2 ][ 4 ]
[ TASK2 ][ ID1 ][ 5 ]
[ TASK1 ][ ID2 ][ 6 ]
我如何将它变成像这样的 2D 视图:
[ Entity ][ TASK1 ][ TASK2 ]
[ ID1 ][ 3 ][ 5 ]
[ ID2 ][ 6 ][ 4 ]
鉴于任务的数量应该是动态的?
我目前的解决方案是这样的:
SELECT A.Entity, B.Task TASK1, C.Task TASK2
FROM (SELECT DISTINCT ENTITY FROM TBL_1) A
LEFT JOIN TBL_1 B
ON A.Entity = B.Entity AND B.Task = 'TASK1'
LEFT JOIN TBL_1 C
ON A.Entity = C.Entity AND C.Task = 'TASK2'
但这需要我对任务进行“硬编码”。我怎样才能使这个动态?
非常感谢!
【问题讨论】:
-
查找您正在使用的 sql server 版本的数据透视表。
-
@BoeroBoy 这些链接是针对 MySQL 的,问题是引用 sql server。
标签: sql-server database tsql dynamic relational-database