View Full Version : برش افقی
mahdi_negahi
شنبه 01 اردیبهشت 1386, 21:36 عصر
شاید سوالم عجیب غریب باشه لطفا جواب نرمال کردن ندهید که امکان ندارد چون دادها بسیار زیاد است
آقا من یک جدول دارم که یک سری اصلاعات در غالب دو ستون دارد
1- ID که یک atuo number
2- field که یک سری اطلاعات درهم برهم از هر چیزی دارد مثلا verion و sapce و type, model جدول به صورت زیر است :
[درpdf
و یک جدول item که از دوستون name و id تشکیل شده در ستون name این اطلاعات است
visual studio 2005 , BMW,.........
و یک جدول به نام prop که سه ستون دارد به نام item_id , field id, value که مثلا در یک سطر آمده
درpdf
حالا سوال اینه که من میخواهم یک query sql در محیط sql server بنویسم که وقتی اجرا بشه در همان محیط بهم اینو بده
درpdf
AminSobati
یک شنبه 02 اردیبهشت 1386, 00:26 صبح
به این ساختار اصطلاحا Open Schema گفته میشه. وقتی در زمان طراحی دیتابیس تمام Attributeها قابل تشخیص نباشند، با این ساختار، در آینده امکان اضافه کردن Attribute حتی توسط کاربر وجود داره. برای تبدیلش به شکل گزارشی که مد نظر شماست، در SQL Server 2005 این کار توسط PIVOT انجام میشه. در 2000 این کار زحمت بیشتری داره (به Cross-tab Report در Books Online رجوع کنین).
mahdi_negahi
یک شنبه 02 اردیبهشت 1386, 13:05 عصر
این online book کجاست استاد
mahdi_negahi
یک شنبه 02 اردیبهشت 1386, 22:15 عصر
آقا این کتابه کجاست من کارم گیره یکی یک چیزی بگه
DonetKarvb
یک شنبه 02 اردیبهشت 1386, 22:58 عصر
آقا این کتابه کجاست من کارم گیره یکی یک چیزی بگه
Books Online همان Help نرم افزار SQL Server است. چیزی شبیه MSDN
mahdi_negahi
دوشنبه 03 اردیبهشت 1386, 08:33 صبح
دوست من مرسی خنگ بازی بزرگی در آوردم منو نجات دادی
mahdi_negahi
سه شنبه 04 اردیبهشت 1386, 16:24 عصر
سلام دوستان میشه یک نفر درباره این pivot توضیح بدهد
AminSobati
سه شنبه 04 اردیبهشت 1386, 21:22 عصر
سلام دوستان میشه یک نفر درباره این pivot توضیح بدهد
لطفا سوالی که به بحث گذشته مطرح نیست رو در تاپیک جدا پست کنین. به این شکل پیگیری و پیدا کردن هر موضوع در Forum راحت تر میشه!
mahdi_negahi
چهارشنبه 05 اردیبهشت 1386, 10:23 صبح
حق با شماست آنو خودم پیدا کردم اگر میشه یک توضیحی درباره این بدهید که چگونه این query را در sql 2000 بگیرم ممنون میشوم
AminSobati
چهارشنبه 05 اردیبهشت 1386, 18:44 عصر
شما به ازاء هر ستونی که باید تشکیل بدین، نیاز به یک Scalar Subquery دارین. Scalar Subquery یک Subquery هستش که جایگزین یک فیلد میشه و تنها باید "یک رکورد-یک یک فیلد" مقدار بده:
CREATE TABLE Sales
(
SYear INT,
Quarter CHAR(2),
Amount FLOAT
)
GO
INSERT INTO Sales VALUES (2001, 'Q2', 70)
INSERT INTO Sales VALUES (2001, 'Q3', 55)
INSERT INTO Sales VALUES (2001, 'Q3', 110)
INSERT INTO Sales VALUES (2001, 'Q4', 90)
INSERT INTO Sales VALUES (2002, 'Q1', 200)
INSERT INTO Sales VALUES (2002, 'Q2', 150)
INSERT INTO Sales VALUES (2002, 'Q2', 40)
INSERT INTO Sales VALUES (2002, 'Q2', 60)
INSERT INTO Sales VALUES (2002, 'Q3', 120)
INSERT INTO Sales VALUES (2002, 'Q3', 110)
INSERT INTO Sales VALUES (2002, 'Q4', 180)
GO
SELECT DISTINCT SYear,
(SELECT SUM(Amount) FROM Sales
WHERE SYear=SalesDist.SYear
AND Quarter='Q1') AS 'Q1',
(SELECT SUM(Amount) FROM Sales
WHERE SYear=SalesDist.SYear
AND Quarter='Q2') AS 'Q2',
(SELECT SUM(Amount) FROM Sales
WHERE SYear=SalesDist.SYear
AND Quarter='Q3') AS 'Q3',
(SELECT SUM(Amount) FROM Sales
WHERE SYear=SalesDist.SYear
AND Quarter='Q4') AS 'Q4'
FROM Sales SalesDist
GO
تمام Queryهایی که به جای فیلد در اینجا استفاده شده باید در 2000 به صورت داینامیک بسازین. میدونم، کار سختیه!
mahdi_negahi
چهارشنبه 05 اردیبهشت 1386, 21:14 عصر
آقا دستت درد نکنه من هر کاری میکنم که آن Query که در pdf است بگیرم نمیتونم میشه با آن db مثال بزنی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.