[英]SQL Query for filtering columns returned
我想基于其他表中的某些元数据返回列。 即我有我的表,其中包含10列,另一个表,其中包含那些与元数据去规范化的列。
即表-车:
列-品牌,型号,颜色
另一个名为“ Flags”的表在上面的每一列中都有一行,并且每一行都有一列“ IsSearchable”和“ ShowOnGrid”(此类)。 我想要的查询是一种将从cars表返回“ Flags”表中标记为“ ShowInGrid”的列的查询。
- - 编辑
抱歉,我应该说这是在SQL Server 2008上。而且,我不想物理地声明我想返回的列,即如果我将列添加到car表中,然后将其添加到Flags中表并声明它是可搜索的,我不需要在SQL查询中以物理方式声明我想返回该列,我希望它能够自动通过。
您需要使用动态SQL。 这可以通过存储过程轻松完成。
这样的事情可能会起作用:
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
我并没有写所有的case语句,也不知道您正在使用多少个标志,但是您可以尝试一下。 它将需要对应用程序中的空值进行过滤。 如果您实际上希望根据Flag列的值省略这些列,则其他答案和注释都正确。 使用动态SQL或先使用另一种语言在外部构建查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.