繁体   English   中英

SQL查询过滤返回的列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM