【问题标题】:Origin and destination using Recursive Query SQL使用递归查询 SQL 的起点和终点
【发布时间】:2022-11-28 17:29:16
【问题描述】:

我无法获得很少的表格列,因为它需要我不擅长的recursive query。所以基本上,如果是直接转让,那么备注部分很可能为空。如果出发地和目的地之间有停顿,那么我需要将车站添加到我的备注栏中。

A to B -> nothing
B to C -> Via B
C -> D -> Via B,C

SQL查询是:

CREATE TABLE IPhone (Id int, Country NVARCHAR(12), seqNo int, Send datetime2(0), Arrive datetime2(0));

INSERT INTO IPhone VALUES 
('1001','America','1', '2022-11-23 18:30:00.000',null),
('1002','China','2', '2022-11-24 08:18:00.000','2022-11-24 05:00:00'),
('1003','Argentina','3', '2022-11-25 18:30:00.000','2022-11-24 18:18:00.000'),
('1004','Saudi Arabia','4',null,'2022-11-25 20:30:00.000');

尝试过

select  f.id,f.Country CountryFrom, t.Country CountryTo
, convert(varchar(4),f.seqNo) + '-' + convert(varchar(4),t.seqNo) seqNo
, f.Send, t.Arrive,concat('VIA ', f.Country ,', ', t.Country) Remarks from IPhone f inner join IPhone t on f.seqNo < t.seqNo order by id;

给予

要求如下。我厌倦了查看How to create a MySQL hierarchical recursive query?,但我无法获得预期的结果。感谢您的帮助。

【问题讨论】:

  • SQL Server <> MySQL;请仅标记您的 (R)DBMS真的使用。
  • @Larnu 指出。如果可能的话,也请帮忙。
  • 这取决于你是什么 (R)DBMS真的使用...不要“注意”问题,解决它并修复标签。
  • 我正在使用 MSSQL 服务器。
  • @BhokluSingh 然后不要像您链接的那样使用为 MySQL 制作的教程。您确定您使用的是 MS SQL 而不是 MySQL 吗?

标签: sql sql-server


【解决方案1】:

如果像 cmets 中提到的那样,您使用 MS SQL,则可以像这样构造递归查询。

with base as (

   <some initial data select>

    UNION ALL

    select ...
    from base
    
)
select ...

【讨论】:

  • 您能否详细说明您的查询并提供一些基本示例。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多