У меня есть 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
Я хочу, чтобы выбрать из таблицы ТоварыЗаказа, чтобы увидеть, какие предметы были приобретены.
Чтобы узнать, какие варианты (ProductAtriibutes) были выбраны, я хочу, чтобы они были «динамическими» столбцами в наборе результатов.
Так ResultSet должен выглядеть следующим образом:
OrderItemId | ProductId | ProductName | Color | Size | Format
1234 123 Mount. Bike Red 2x20 Mirror
Я не знаю, если PIVOT является вещь, чтобы использовать? Я не использую какие-либо агрегированные функции, поэтому я думаю, что нет ...
Есть ли какие-нибудь SQL-ниндзя, которые могут мне помочь?
Как? Когда я не использую какие-либо агрегированные функции? Я не хочу подытоживать идентификаторы или что-то в этом роде. – MartinHN
Я думаю, что сейчас это очень близко, но значение столбцов «Цвет и размер» равно null. Может быть, просто небольшая деталь отсутствует? – MartinHN
Одна вещь может вызвать diff, у вас был ProductAttributeTypeId в таблице OrderItemsToProductAttributes, я не поместил это в свой пример b/c, на который следует ссылаться через соединения (третья нормальная форма и все). Если вы говорите, что они могут иметь нули, то что-то должно быть изменено на что-то вроде: SELECT AttrPivot.OrderItemId, isnull ([Размер], 'NA') AS [Размер], isnull ([Цвет], 'NA ') AS Color FROM OrderAttributes – JBrooks