2011-05-28 83 views
1

我有如下返回結果的看法:如何從SQL Server 2005中的列值查找表的列名?

 D1  D2  D3  D1_CODE  D2_CODE  D3_CODE 
    ---- ---- ---- ---------  --------- --------- 
    10.00 13.00 14.00  OD   LENGTH  THICKNESS 

我創建了下面的選擇查詢視圖,

SELECT 
     MKT_MRL_Detail.D1, 
     MKT_MRL_Detail.D2, 
     MKT_MRL_Detail.D3, 
     MAS_SizeType.D1_Code, 
     MAS_SizeType.D2_Code, 
     MAS_SizeType.D3_Code 
FROM 
     MKT_MRL_Detail INNER JOIN 
     STR_Item ON STR_Item.ItemID = MKT_MRL_Detail.ItemID INNER JOIN 
     MAS_SizeType ON MAS_SizeType.SizeTypeID = STR_Item.SizeTypeID 

我返回基於內部視圖加入的兩個表。 上述視圖只返回一行。在這裏,我想找到哪個列的值爲'LENGTH': 我正在使用SQL Server 2005.任何人都可以幫忙嗎?

+0

您無權查看視圖的內容?!在管理工作室中,右鍵單擊視圖名稱並選擇編輯。 – 2011-05-28 05:25:32

+0

你好。不要認爲它是一個視圖。請考慮將它作爲基於兩個表的內部連接的選擇。在這種情況下,我們可以找到? – thevan 2011-05-28 05:28:45

+0

嗨小馬:我編輯了我的問題,請看看它。 – thevan 2011-05-28 05:35:16

回答

1

我最好的建議是重寫視圖(甚至可能是數據庫),因爲這不是一個很好的設計。但是,我懷疑這是可能的。如果不是,這裏是我的建議:

SELECT * 
FROM (
SELECT D1 AS Value, D1_CODE AS Code 
FROM view 
UNION ALL 
SELECT D2, D2_CODE 
FROM view 
UNION ALL 
SELECT D3, D3_CODE 
FROM view 
) AS myInfo 
WHERE Code='LENGTH' 

它不是很漂亮,但它會完成工作。

+0

HI Biggs,非常感謝。它的工作..... – thevan 2011-05-28 08:05:41

+0

我也會測試在每個select語句中放置WHERE語句。它更簡單,但如果你決定返回大量記錄而不是一個,它會表現得更好。但是,在這種情況下,性能差異不保證這樣做。 – IAmTimCorey 2011-05-28 14:12:19

+0

OK比格斯。但是你的第一個解決方案非常適合我的問題。 – thevan 2011-05-30 06:53:52

相關問題