2012-03-22 96 views
1

我有两个表执行操作和行

1)列

2)行

COLUMN TABLE     
COLumnID 
---------------- 
1 
2 
3 
4 
5 
6 
7 
8 
9 

ROW TABLE 
ROW iD 
------------- 
100 
104 
101 
99 
77 
20 
10 

最终的输出应该是这样的:

01.Row   1 2 3 4 5 6 7 8 9 
02.----------- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
03.10   x x    x     
04.20   x x   x x     
05.77   x        x   
06.99   x   x        x 
07.100   x x   x x     
08.101   x          
09.104   x x   x     x 

的挑战在于当且仅当行值可以被col值整除时,标记一个坐标值为X,即它是一个零模。附加要求是:最终查询必须使用随机行值,并且应该使用数据透视操作符。

+0

您使用的是什么rdbms? – Taryn 2012-03-22 17:29:26

+0

这是一个功课问题吗?它看起来很熟悉。 – Griffin 2012-03-22 17:44:04

回答

3

以下应该做你正在寻找的sql服务器。 使用CTE来确定x应该在哪里,然后从该CTE枢转

with mq as(select a.rowid 
       ,b.columnid 
       ,case when (a.rowid % b.columnid) = 0 then 'X' else null end as coord 
      from row_table a 
       inner join column_table b on 1=1) 

select rowid,[1], [2], [3], [4],[5], [6], [7], [8], [9] 
from mq 
pivot(max(coord) for columnid in ([1], [2], [3], [4],[5], [6], [7], [8], [9])) as pv