我有一個MS SQL Server與電子商務店面的數據庫。SQL使行成列,PIVOT也許
這是一些我的表:
Products:
Id | Name | Price
ProductAttributeTypes: -Color, Size, Format
Id | Name
ProductAttributes: --Red, Green, 12x20 cm, Mirrored
Id | ProductAttributeTypeId | Name
Orders:
Id | DateCreated
OrderItems:
Id | OrderId | ProductId
OrderItemsToProductAttributes: --Relates an OrderItem to its product and selected attributes
OrderItemId | ProductAttributeId | ProductAttributeTypeId | ProductId
我想從表中的OrderItems選擇,看看哪個項目已被購買。
要查看選擇哪種變體(ProductAtriibutes),我希望那些結果集中的「動態」列。
所以結果集應該是這樣的:
OrderItemId | ProductId | ProductName | Color | Size | Format
1234 123 Mount. Bike Red 2x20 Mirror
我不知道,如果PIVOT是用的東西?我沒有使用任何聚合函數,所以我猜不...
是否有任何SQL Ninjas可以幫助我?
如何?當我沒有使用任何聚合函數?我不想總結Ids或類似的東西。 – MartinHN 2009-08-30 23:11:23
我認爲這一個現在非常接近 - 但Color和Size列的值都是null。也許只是一個小細節丟失? – MartinHN 2009-08-31 10:45:44
有一件事可能會導致diff,你在表OrderItemsToProductAttributes中有ProductAttributeTypeId,我沒有把它放在我的樣本b/c中,這應該通過連接(第三範式和所有)來引用。如果你說它們可能有空值,那麼應該將其改爲如下形式: SELECTn AttrPivot.OrderItemId, isnull([Size],'NA')AS [Size], isnull([Color],'NA ')AS顏色 從OrderAttributes – JBrooks 2009-08-31 14:20:47