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

SQLクエリの問題

    CREATE TABLE #Garden (Id INT, Name VARCHAR(20))
    INSERT INTO #Garden
    SELECT 1, 'myGarden' UNION ALL
    SELECT 2, 'yourGarden'
    
    CREATE TABLE #Flowers (GardenId INT, Flower VARCHAR(20))
    INSERT INTO #Flowers
    SELECT  1, 'rose'  UNION ALL
    SELECT  1, 'tulip'  UNION ALL
    SELECT  2, 'thistle' 
    
    DECLARE @ColList nvarchar(max)
    
    SELECT @ColList = ISNULL(@ColList + ',','') + QUOTENAME('Flower' + CAST(ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS VARCHAR))
    FROM #Flowers WHERE GardenId = (
    SELECT TOP 1 GardenId
    FROM #Flowers
    ORDER BY COUNT(*) OVER (PARTITION BY GardenId) DESC
    
    )
    
    EXEC (N'
    ;WITH cte As
    (
    SELECT *, ''Flower'' + CAST(ROW_NUMBER() OVER (PARTITION BY GardenId ORDER BY (SELECT 0)) AS VARCHAR) RN
    FROM #Flowers F
    )
    SELECT Name,' + @ColList + N'
    FROM cte 
    JOIN #Garden g ON g.Id = GardenId
    PIVOT (MAX(Flower) FOR RN IN (' + @ColList + N')) Pvt')
    
    
    DROP TABLE #Garden
    DROP TABLE #Flowers
    

    返品

    Name                 Flower1              Flower2
    -------------------- -------------------- --------------------
    myGarden             rose                 tulip
    yourGarden           thistle              NULL
    


    1. SQLの設計とクエリを試すためのオンラインツール

    2. 初心者向けSQLAVG()

    3. mysql:テーブルBに存在しない場合は、テーブルAからすべてのアイテムを選択します

    4. ロックとパフォーマンス