mahdi_negahi
شنبه 21 اردیبهشت 1387, 10:16 صبح
سلام دوستان ، اول بگم من سرچ کردم بعد تاپیک گذاشتم
من ساختار db به این گونه است :
Goods : کالا
Attribute : مشخصات کالا
AttributeValue : مقادیر مشخصات
AttributeGoods : ارتباط کالا با هر مقدار مشخصه
http://i29.tinypic.com/121ddup.jpg
و این هم مقادیر
http://i31.tinypic.com/1zw2hpj.jpg
حال سوال های من:
من می خواهم مقادیر جدول Attribute به عنوان ستون Goods باشد و AttributeValue هم مقدار سطر آن باشد
من Pivot بررسی کردم ولی این دستور یک تابع Aggreation میخواهد که مقادیر AttributeValue من از نوع کاراکتر است
در جایی هم دیدم که یک Sp به نام CrossTab نوشته که باز هم Agrreation میخواهد ولی خودم با Distinct آن را پیاده سازی کردم ولی چون حاصل Join من چند سطر میشود این Query دوسطر میدهد
در زیر Query خودم مینویسم توجه کنید که این Query ساخته میشود و من نتیجه گذاشتم:
SELECT DISTINCT Goods.ID,[Column],Code,Serial ,
(CASE AttributeName WHEN 'Buss' THEN [Value] END) as 'Buss',(CASE AttributeName WHEN 'Cash' THEN [Value] END) as 'Cash', (CASE AttributeName WHEN 'Speed' THEN [Value] END) as 'Speed' FROM Goods INNER JOIN dbo.AttributeGoods ON GoodsRef = Goods.ID INNER JOIN AttributeValue ON AttValueRef = AttributeValue.ID INNER JOIN Attribute ON AttributeRef = Attribute.ID GROUP BY Goods.ID,[Column],Code,Serial,AttributeName,[Value]
من ساختار db به این گونه است :
Goods : کالا
Attribute : مشخصات کالا
AttributeValue : مقادیر مشخصات
AttributeGoods : ارتباط کالا با هر مقدار مشخصه
http://i29.tinypic.com/121ddup.jpg
و این هم مقادیر
http://i31.tinypic.com/1zw2hpj.jpg
حال سوال های من:
من می خواهم مقادیر جدول Attribute به عنوان ستون Goods باشد و AttributeValue هم مقدار سطر آن باشد
من Pivot بررسی کردم ولی این دستور یک تابع Aggreation میخواهد که مقادیر AttributeValue من از نوع کاراکتر است
در جایی هم دیدم که یک Sp به نام CrossTab نوشته که باز هم Agrreation میخواهد ولی خودم با Distinct آن را پیاده سازی کردم ولی چون حاصل Join من چند سطر میشود این Query دوسطر میدهد
در زیر Query خودم مینویسم توجه کنید که این Query ساخته میشود و من نتیجه گذاشتم:
SELECT DISTINCT Goods.ID,[Column],Code,Serial ,
(CASE AttributeName WHEN 'Buss' THEN [Value] END) as 'Buss',(CASE AttributeName WHEN 'Cash' THEN [Value] END) as 'Cash', (CASE AttributeName WHEN 'Speed' THEN [Value] END) as 'Speed' FROM Goods INNER JOIN dbo.AttributeGoods ON GoodsRef = Goods.ID INNER JOIN AttributeValue ON AttValueRef = AttributeValue.ID INNER JOIN Attribute ON AttributeRef = Attribute.ID GROUP BY Goods.ID,[Column],Code,Serial,AttributeName,[Value]