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

行ごとではなく、(異なる列で)列状にクエリ結果を表示する方法は?

    次のようなものかもしれません:

    最初のテストデータ:

    CREATE TABLE Flight(FlightId  int,FlightNumber varchar(10))
    CREATE TABLE FlightCapacity(ID int,FlightIdRef int,ClassIdRef int,Capacity int)
    CREATE TABLE Class(ClassId int,Name varchar(10))
    
    INSERT INTO Class VALUES(1,'Y'),(2,'A')
    INSERT INTO Flight VALUES(1,123),(2,423)
    INSERT INTO FlightCapacity VALUES(1,1,1,10),(2,1,2,20),(3,2,2,10)
    

    次に、次のような一意の列を取得する必要があります:

    DECLARE @cols VARCHAR(MAX)
    SELECT  @cols = COALESCE(@cols + ','+
                    QUOTENAME('ClassNameAndCapacity'+CAST(ClassId AS VARCHAR(10))),
                    QUOTENAME('ClassNameAndCapacity'+CAST(ClassId AS VARCHAR(10))))
    FROM 
        Class
    

    動的 SQL の宣言と実行:

    DECLARE @query NVARCHAR(4000)=
    N'SELECT
        *
    FROM
    (
    SELECT
        Flight.FlightNumber,
        Class.Name+CAST(FlightCapacity.Capacity AS VARCHAR(100)) AS ClassName,
        ''ClassNameAndCapacity''+CAST(Class.ClassId AS VARCHAR(10)) AS ClassAndCapacity
    FROM
        Flight
        JOIN FlightCapacity
            ON Flight.FlightId=FlightCapacity.FlightIdRef
        JOIN Class
            ON FlightCapacity.ClassIdRef=Class.ClassId
    ) AS p
    PIVOT
    (
        MAX(ClassName)
        FOR ClassAndCapacity IN('[email protected]+')
    ) AS pvt'
    
    EXECUTE(@query)
    

    そして、私の場合、作成したテーブルを削除します:

    DROP TABLE Flight
    DROP TABLE Class
    DROP TABLE FlightCapacity
    



    1. Djangoviews.pyバージョンのSQL結合とマルチテーブルクエリ

    2. エラー :列 DOB の型が、UNPIVOT リストで指定された他の列の型と競合しています

    3. MySqlCommand Prepare()がIsPreparedをtrueに設定することはありません

    4. Oracle-オプションのパラメータでのインデックスの使用