2012-03-22 123 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