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

SQL2つのテーブル間で可能なすべてのラウンドロビンの組み合わせ

    この問題の2つの解決策は次のとおりです

    SELECT  t1.Name + ',' +  t2.Name AS NamesCombination
    FROM Person t1
    INNER JOIN Person t2
    ON t1.Name < t2.Name
    

    または(Oracle 11i R2 +)

    WITH NamesCombination AS 
    ( 
        SELECT  1 AS Cntr
                ,Name 
                , CAST(Name AS VARCHAR(MAX))AS NamesCombinations
        FROM Person 
        UNION ALL 
        SELECT  
            nc.Cntr+1
            ,p.Name 
            ,nc.NamesCombinations + ',' +  CAST(p.Name AS VARCHAR(MAX))                      
        FROM Person AS p JOIN NamesCombination nc ON p.Name < nc.Name
        WHERE nc.Cntr < 2  
    )
    SELECT NamesCombinations
    FROM NamesCombination
    WHERE Cntr  = 2 
    



    1. 接続文字列としてのMySQLSecureString

    2. Hibernateを使用してOracleでLARGEBLOB(> 100MB)を永続化する方法

    3. SQLで行に番号を付ける方法

    4. オラクルで2つの日付を減算して、時間と分で結果を取得する方法