sql >> データベース >  >> RDS >> Sqlserver

SQL:分割階層で不足しているフォルダー パスを検索する

    この追加されたパスを使用 (11,2,'U\V\Z\L\O\Q\R\S\T') パスに複数の見つからないフォルダーを表示するには:

    with cte as (
    select BaseDirID, DisplayPath = left(DisplayPath,len(DisplayPath)-charindex('\',reverse(DisplayPath)))
    from t
    where DirLevel > 1
      and not exists (
      select 1 
      from t i
      where t.BaseDirId = i.BaseDirId
        and i.DisplayPath = left(t.DisplayPath,len(t.DisplayPath)-charindex('\',reverse(t.DisplayPath)))
        )
    union all 
    select BaseDirID, DisplayPath = left(DisplayPath,len(DisplayPath)-charindex('\',reverse(DisplayPath)))
    from cte t
    where not exists (
      select 1 
      from t i
      where t.BaseDirId = i.BaseDirId
        and i.DisplayPath = left(t.DisplayPath,len(t.DisplayPath)-charindex('\',reverse(t.DisplayPath)))                                                   
        )
    )
    select distinct * 
    from cte
    

    rextester デモ:http://rextester.com/CEVGZ96613

    リターン:

    +-----------+-----------------+
    | BaseDirID |   DisplayPath   |
    +-----------+-----------------+
    |         1 | A\B             |
    |         1 | A\B\C\D         |
    |         1 | A\B\F\G         |
    |         2 | U\V             |
    |         2 | U\V\M\L         |
    |         2 | U\V\W\X         |
    |         2 | U\V\Z           |
    |         2 | U\V\Z\L         |
    |         2 | U\V\Z\L\O       |
    |         2 | U\V\Z\L\O\Q     |
    |         2 | U\V\Z\L\O\Q\R   |
    |         2 | U\V\Z\L\O\Q\R\S |
    +-----------+-----------------+
    



    1. Oracle用のSQL挿入を生成しています

    2. 集計関数SUMを使用してレコードをフィルタリングする方法

    3. SQL(MySQL)で、特定のフィールドに対してラウンドロビンORDER BYを実行する方法はありますか?

    4. offset+limitを使用してmySQLクエリの結果の総数を検索します