我有一個基本上在傳統數據庫中布爾值的表。列名稱作爲字符串值存儲在另一個表中,所以我需要將一個表的列名與另一個表中的字符串值進行匹配。我知道必須有一種方法可以直接在SQL Server中使用SQL,但它不在我身邊。如何將列名轉換爲SQL Server中的結果值?
我最初的想法是使用PIVOT,但默認情況下它並未啓用,並且將該更改推送到生產數據庫時啓用它可能會是一個困難的過程。我寧願使用默認啓用的內容。
我正在考慮使用COALESCE將布爾值轉換爲我需要的值的字符串。這將是一個手動過程。
我想我還會使用一個表變量來將第一個查詢的結果插入到該變量中,並使用這些結果來執行第二個查詢。我仍然有問題,列是在一個單一的行上,所以我希望我可以輕鬆地轉換值以將字段名作爲字符串放在結果集中。但是,如果我可以輕鬆地做到這一點,我可以輕鬆地使用子選擇來編寫查詢。
歡迎任何提示。
PIVOT和UPIVOT由「默認」啓用。如果您以向後兼容模式運行,它們不會啓用,但這不是「默認」。如果在2010年發現自己編寫變通方法是因爲您將數據庫保持在SQL 2000兼容模式下,那麼您應該自問自問爲什麼在我的情況下仍然使用SQL 2000兼容模式... – 2010-03-22 21:04:24
我在兼容性級別檢查了SQL Server 2000 。在沒有單元測試的情況下更改它非常危險。 「exec sp_dbcmptlevel LegacyDatabase」 – Brennan 2010-03-22 21:10:48
我並不是說不用UT來改變它。我在說,如果你正在開發*新的代碼來解決後臺兼容問題,或許是時候重新審視兼容級別並投入一些努力來使其更新,所以你不必花費精力去做工作。 – 2010-03-22 23:37:41