在填充了1和0的sql中创建数据透视表
我有表1,其中包含id[s1,s2,s3..Sn]在填充了1和0的sql中创建数据透视表,sql,pivot-table,Sql,Pivot Table,我有表1,其中包含id[s1,s2,s3..Sn] s1 s2 s3 我有另一个表2,包含索引[0,1,2,…n] 0 1 2 3 我有第三个表3[ID,开始索引,停止索引]。例如: s0 | 1 | 3 | s0 | 4 | 6 | s1 | 1 | 2 | 等等。我想创建一个透视表,其中包含行s1、s2、s3。。。具有0,1,2,3。。表的内容应为零或1 ---|0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |... s0 |0 | 1 | 1 | 1 | 1
s1
s2
s3
我有另一个表2,包含索引[0,1,2,…n]
0
1
2
3
我有第三个表3[ID,开始索引,停止索引]。例如:
s0 | 1 | 3 |
s0 | 4 | 6 |
s1 | 1 | 2 |
等等。我想创建一个透视表,其中包含行s1、s2、s3。。。具有0,1,2,3。。表的内容应为零或1
---|0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |...
s0 |0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
s1 |0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
.
.
您可以将交叉联接与索引表配合使用,并透视最终结果 如果列数是可变的,则需要动态SQL 示例
Select *
From (
Select id
,item = a.[index]
,value = case when a.[index] between b.start_index and b.stop_index then 1 else 0 end
From table2 A
Cross Join table3 B
) src
Pivot (max(value) for Item in ([0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]) ) pvt
返回
您已经标记了两个非常不同的RDBMS;你到底在用什么?我已删除了冲突的标记,请重新标记正确的标记,并且只标记正确的标记。到目前为止,您尝试了什么,为什么没有成功?我认为
表2
是(有效的)他们的统计表。@Larnu再看一眼,您是对的。我会调整的