2010-10-13 43 views
3

我有一個daycode列存儲如1,2-值... 7
然後在不同的表我有喜歡的cols field1,field2...field7如何選擇其他一些列組成的列值

我可以加入他們的行列在key上,但是如何根據傳遞的值來選擇特定的fieldX列?

Table 1 has the following columns 
------------- 
id 
prodno 
field1 
field2 
field3 
field4 
field5 
field6 
field7 

其中每個字段X代表星期一,星期二等到星期日爲止的值。

Table 2 has the following columns 
------------- 
id 
prodno 
dt 
daycode 

更新

T2有一個像字段1,字段2 ...字段7列,daycode值是1,2,... 7。我們需要Concat的 「場」 與取自值日代碼欄。

select table1.id,select [concat('field',table2.daycode)] from table1 join 
table2 on table1.id=table2.key 
+0

我不明白的問題! – vulkanino 2010-10-13 14:52:17

+0

請提供兩個表格的結構樣本數據和預期輸出。 – Oded 2010-10-13 14:54:02

+0

如果你寫出兩個表的定義(可能帶有值),然後顯示你想要返回的連接,這將有所幫助。我相信他正在尋找像day1,field1 |這樣的結果集第2天,第2場|等等......如果是這樣,那可能是一個數據透視查詢。 – Kendrick 2010-10-13 14:55:13

回答

4

您可以創建一個字符串,然後使用execute (@sql) 執行它的語句或者可以在選擇添加一個case語句,你會選擇適當的列。

林不知道這aobut不過你可以試試

SELECT t1.id, 
CASE 
    WHEN daycode = 1 THEN t2.field1 
    WHEN daycode = 2 THEN t2.field2 
    WHEN daycode = 3 THEN t2.field3 
    WHEN daycode = 4 THEN t2.field4 
END 
FROM t1 join t2 on t1.id=t2.key; 
+0

+1,只有做到這一點的方法是動態SQL。 @sql ='select field'+ table2.id'+'from ...'動態SQL將引入一些安全問題,請通過網絡搜索找到更多 – Twelfth 2010-10-13 15:16:13

+0

儘管最好的方法是修復不良設計。 – HLGEM 2010-10-13 17:24:10

+0

無法更改表格,因爲它是某個其他服務的同步過程的結果。 – Pentium10 2010-10-13 18:35:45

相關問題