C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■93214 / 3階層)  SQL
□投稿者/ たーん (1回)-(2019/11/28(Thu) 11:29:34)
犬夜叉さんのSQLの場合、TB1.NO が 2.5 のときに 4 行取得されますが合っていますか?

パズルのつもりで解いてみましたがいかがでしょう。
(以下のSQLでは TB1.NO が 2.5 のときは 2 行取得です)

WITH
TB1 (NO, NAME) AS (
    SELECT      2  , 'a'
    UNION SELECT 1.5, 'b'
    ),
TB2 (ID, NAME, NO2) AS (
    SELECT          1, 'a', 1
    UNION SELECT    1, 'b', 2
    UNION SELECT    2, 'c', 1
    UNION SELECT    2, 'd', 2
    UNION SELECT    2, 'e', 3
    UNION SELECT    2, 'f', 4
    )

select
    NO,NAME,ID,NAME2,NO2
from
(
    select
        TB1.NO
        ,TB1.NAME
        ,TB2.ID
        ,TB2.NAME AS NAME2
        ,TB2.NO2
        ,MAX(TB2.NO2)OVER(PARTITION BY TB1.NO,TB2.ID) / 2 as BORDER
    from
        TB1
    inner join
        TB2
    on  TB1.NO-1 < TB2.ID and TB2.ID < TB1.NO+1
) T
where
    NO = ID
or  (NO > ID and NO2 >  BORDER)
or  (NO < ID and NO2 <= BORDER)


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: SQL /犬夜叉 →Re[4]: SQL /氏
→Re[4]: SQL /犬夜叉
 
上記関連ツリー

SQL / 犬夜叉 (19/11/27(Wed) 17:01) #93196
Re[1]: SQL / kiku (19/11/27(Wed) 17:19) #93197
  ├ Re[2]: SQL / kaina (19/11/27(Wed) 19:44) #93199
  └ Re[2]: SQL / 犬夜叉 (19/11/28(Thu) 09:10) #93210
    └ SQL / たーん (19/11/28(Thu) 11:29) #93214 ←Now
      ├ Re[4]: SQL / 氏 (19/11/28(Thu) 20:19) #93232
      └ Re[4]: SQL / 犬夜叉 (19/11/29(Fri) 09:58) #93242

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信