【问题标题】:Creating dynamic sql with tsql?用 tsql 创建动态 sql?
【发布时间】:2013-07-11 13:55:33
【问题描述】:
select (select code from SC_StockItem where StockItemID = a.StockItemID)
from SC_StockItemVariantSetAttribValue a
inner join SC_StockItemVariantSetAttribValue a2 on a.StockItemID = a2.StockItemID
and a2.VariantSetAttribValueID = 18
inner join SC_StockItemVariantSetAttribValue a3 on a2.StockItemID = a3.StockItemID
and a3.VariantSetAttribValueID = 12
where a.VariantSetAttribValueID = 26

我希望执行上面的查询。类似于以下的行:

inner join SC_StockItemVariantSetAttribValue a2 on a.StockItemID = a2.StockItemID
    and a2.VariantSetAttribValueID = 18

将根据从另一个查询返回的行数添加。有没有办法可以在 TSQL 函数中添加这些行?

【问题讨论】:

  • 动态 sql 不适合吗?
  • 这是在另一个函数中使用的,因为它已经对服务器有点要求,如果我可以避免从 c# 到 sql server 的多次调用,我更愿意
  • 动态 SQL 的最佳信息:Dynamic SQL。这应该回答有关动态 SQL 的所有问题(少数几个比 SO 更好的资源之一;-))。但是您的其他查询看起来如何?也许结合这两个查询更容易?

标签: sql sql-server tsql dynamic-sql


【解决方案1】:

尝试为join 添加条件,使这部分固定,而不是动态:

inner join SC_StockItemVariantSetAttribValue a2 on (a.StockItemID=a2.StockItemID
and a2.VariantSetAttribValueID = 19 
and @anotherQueryCount > 0)  --here you check your additional rule  

如果条件为真,加入将起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-17
    • 2012-09-20
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2012-07-20
    • 1970-01-01
    相关资源
    最近更新 更多