sql >> Databasteknik >  >> RDS >> Sqlserver

Hur visar man frågeresultat kolumnär (i olika kolumner) istället för rad för rad?

Kanske något sånt här:

Först lite testdata:

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)

Då måste du få de unika kolumnerna så här:

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

Avlägsna och köra den dynamiska 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)

Och i mitt fall kommer jag att släppa de skapade tabellerna:

DROP TABLE Flight
DROP TABLE Class
DROP TABLE FlightCapacity



  1. Är det möjligt att använda SqlGeography med Linq till Sql?

  2. Hur sparar jag BLOB som fil i PL/SQL?

  3. Kan inte ansluta till två postgres-databaser i rails 3.2.

  4. Fel vid ändring av DAL, System.ArgumentException, En post med samma nyckel finns redan