【问题标题】:Nested Loop inside a SQL Statement [duplicate]SQL语句中的嵌套循环[重复]
【发布时间】:2019-09-05 16:29:17
【问题描述】:

我一直在试图弄清楚是否有一种方法可以在 SQL 语句中使用循环。

Select j.JobID, s.OrderNumber, 
(SELECT OperationID From Operations) as Operations  <--- This will cause multiple results
From Jobs j
Inner Join Sales s on j.JobID = s.SalesJobID
Where j.JobID = '123456-1-1'

这就是我们所拥有的

JobID        OrderNumber    Operation
-----        -----------    ----------
1123456-1-1   TEST1         DEV
1123456-1-1   TEST1         APR
1123456-1-1   TEST1         CAT
1123456-1-1   TEST1         LFT
1123456-1-1   TEST1         PKG

尝试做这样的事情。

JobID        OrderNumber    Operations
-----        -----------    ----------
1123456-1-1   TEST1         DEV, APR, CAT, LFT, PKG

【问题讨论】:

  • 为什么循环??? SQL 是一种基于集合的语言。你不循环。如果您使用的是 SQL Server,请尝试查找 STRING_AGG()。否则,请使用适当的标签正确标记您的问题。
  • 网络上也有大量关于此的示例。你有没有做过任何研究???
  • @Eric 是的,我有。
  • 有很多方法可以做到这一点,其中一些取决于您使用的数据库引擎(您没有指定)。您可以使用 CTE、CURSOR、FOR XML PATH。请参阅本文了解实现目标的可能方法。 red-gate.com/simple-talk/sql/t-sql-programming/…
  • @mrmcg 如果你有,你就不需要问这个问题了。网络上有足够多的例子。我什至没有看到您尝试获取所需的查询。

标签: sql sql-server sql-server-2014 string-aggregation


【解决方案1】:

你可以用 XML PATH 做到这一点

Select j.JobID, s.OrderNumber, 
(SELECT OperationID + ',' From Operations WHERE add_your_filter_here FOR XML PATH ('')) as Operations
From Jobs j
Inner Join Sales s on j.JobID = s.SalesJobID
Where j.JobID = '123456-1-1'

【讨论】:

  • 我会检查一下。谢谢。
  • 这很好用。非常感谢你
猜你喜欢
  • 2015-12-28
  • 2020-10-28
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 2018-04-02
  • 2015-10-01
  • 2018-06-09
  • 1970-01-01
相关资源
最近更新 更多