1

私は2つのテーブルを持っています:

  • 列 OrderNr および OrderContact を持つ「OrderHeader」。
  • 'OrderNr 列と OrderSerial 列を持つ OrderDetail。

オーダー番号ごとに、最大 3 つのオーダーシリアルがあります。だから、私が取得しようとしているのは、列を持つテーブルです:

  • 注文番号
  • オーダー連絡先
  • オーダーシリアル1
  • オーダーシリアル2
  • オーダーシリアル3

私は今、ピボットで立ち往生しています

    SELECT  OrderNr,
        OderContact,
        [1] as OrderSerial1,
        [2] as OrderSerial2,
        [3] as OrderSerial3
FROM
    (select H.OrderNR as OrderNr,
            OrderContact as OderContact,
            OrderSerialsNr
    from OrderHeader H inner join OrderDetail D on H.OrderNr = D.OrderNr
    ) AS PivSource
PIVOT
(count(OrderSerialsNr) for OrderSerialsNr in([1],[2],[3])) as pvt

これには、adventureworks DB を使用しました。

   USE [AdventureWorks2008R2]
GO

create view [test].[OrderHeader] (OrderNr,OrderContact)
as
SELECT  SalesOrderID,
        FirstName + ' ' + LastName

FROM         Sales.SalesOrderHeader INNER JOIN
                      Sales.Customer ON Sales.SalesOrderHeader.CustomerID = Sales.Customer.CustomerID INNER JOIN
                      Person.Person ON Sales.Customer.PersonID = Person.Person.BusinessEntityID
GO

CREATE view [test].[OrderDetail] (OrderNr,OrderSerialsNr,Price)
as
SELECT [SalesOrderID]
      ,[ProductID]
      ,[unitPrice]
  FROM [AdventureWorks2008R2].[Sales].[SalesOrderDetail]
  where SalesOrderID in (select SalesOrderID
                        from [AdventureWorks2008R2].[Sales].[SalesOrderDetail]
                        group by SalesOrderID
                        having COUNT(SalesOrderID) < 4)
GO

もうどこを見ればいいのかわからないので、助けてください:)。

4

1 に答える 1