Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menampilkan kolom hasil kueri (dalam kolom berbeda) alih-alih baris demi baris?

Mungkin seperti ini:

Pertama beberapa data uji:

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)

Maka Anda harus mendapatkan kolom unik seperti ini:

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

Delcaring dan eksekusi sql dinamis:

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)

Dan kemudian dalam kasus saya, saya akan menjatuhkan tabel yang dibuat:

DROP TABLE Flight
DROP TABLE Class
DROP TABLE FlightCapacity



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlDataReader.HasRows mengembalikan false sejak pemutakhiran SQL 2008

  2. Coba buat tabel dari Select - SqL Server 2008 melempar kesalahan

  3. Mengapa kolom WHERE =NULL tidak menimbulkan kesalahan di SQL Server?

  4. adalah tipe yang tidak valid untuk digunakan sebagai kolom kunci dalam indeks

  5. Basis Data Sistem SQL Server – Pulihkan Basis Data Sistem