2010-07-05 48 views
1

我想根據另一個表中的某些元數據返回列。即我有我的表,其中包含10列,另一個表包含這些列denormalise元數據與他們做。用於篩選返回列的SQL查詢

即 表 - 汽車:

列 - 品牌,型號,顏色

和所謂的「標誌」另一臺擁有上述每個列的行和每一列中是否有「一欄IsSearchable「和」ShowOnGrid「 - 這類事情。 我想查詢是一個將返回從在「標誌」表標記爲「ShowInGrid」

----編輯

道歉汽車表中的所有列,我應該說,這在SQL Server 2008. 另外,我不想要物理狀態我想要返回的列,即如果我添加一列到車表,然後將其添加到標誌表並聲明它可搜索,我不想在SQL查詢中物理狀態,我想要返回該列,我希望它自動通過。

+1

對於什麼數據庫?這將需要使用動態SQL,否則在數據庫之外構建查詢... – 2010-07-05 16:01:13

+0

Flags表與其他表的關係如何? – 2011-04-19 12:31:20

回答

0

您需要使用動態SQL;這可以通過存儲過程輕鬆完成。

0

像這樣的東西可能會奏效:

Select 
    D.CarID, 
    Case D.ShowMake When True Then D.Make Else NULL END AS Make 
    ... 
From 
    (Select 
    C.CarID, C.Make, C.Model, C.Colour, F.IsSearchable, F.ShowOnGrid, F.ShowMake 
    From 
    Cars C 
    Inner Join 
    Flags F 
     On C.CarID = F.CarID) D 

我並沒有在所有的情況下寫的語句,不知道你有多少標誌的工作,但你可以試試看。它需要在您的應用程序中過濾空值。如果您確實希望根據標記列值省略列,則其他答案和評論都是正確的。無論是動態SQL還是先用另一種語言構建您的查詢。