ورود

View Full Version : نمایش خروجی یک SQL بصورت یک رکورد



nasr
شنبه 11 دی 1395, 14:37 عصر
سلام
من یه کوری اجرا میکنم که خروجی آن شبیه به این است


bestankar
Tdate


103000000
2011-09-09


151000000
2012-08-09


171000000
2012-08-11


183000000
2011-08-09



حالا میخوام رکوردهای برگشتی را بصورت یک رکورد با تعداد ستونهای زیاد نمایش بدهم به اینصورت:



2011-08-09
183000000
2011-09-09
103000000
2012-08-09
151000000
2012-08-11
171000000

alireza_s_84
شنبه 11 دی 1395, 14:46 عصر
سلام
من یه کوری اجرا میکنم که خروجی آن شبیه به این است


bestankar
Tdate


103000000
2011-09-09


151000000
2012-08-09


171000000
2012-08-11


183000000
2011-08-09



حالا میخوام رکوردهای برگشتی را بصورت یک رکورد با تعداد ستونهای زیاد نمایش بدهم به اینصورت:



2011-08-09
183000000
2011-09-09
103000000
2012-08-09
151000000
2012-08-11
171000000



سلام
هم میتونید از تابع PIVOT استفاده کنید هم از تابع STUFF
بهتره دیاگرام جدولها رو قرار بدین تا بهترین کوئری و مثال زد

nasr
شنبه 11 دی 1395, 15:17 عصر
سلام
این ساختار جدول که و کوری که این خروجی را میگیرم

SELECT ISNULL(SUM(Credit),0) AS bestankar , Tdate FROM TBMohasebeTalab GROUP BY Tdate

nasr
یک شنبه 12 دی 1395, 08:26 صبح
لطفا یه راهی بگید
کارم گیر کرده
ممنونم

sg.programmer
یک شنبه 12 دی 1395, 09:44 صبح
Table is:
+----+------+
| Id | Name |
+----+------+
| 1 | aaa |
| 1 | bbb |
| 1 | ccc |
| 1 | ddd |
| 1 | eee |
+----+------+ Required output:
+----+---------------------+
| Id | abc |
+----+---------------------+
| 1 | aaa,bbb,ccc,ddd,eee |
+----+---------------------+ Query:
SELECT ID,
abc = STUFF(
(SELECT ',' + name FROM temp1 FOR XML PATH ('')), 1, 1, ''
)
FROM temp1 GROUP BY id

nasr
یک شنبه 12 دی 1395, 10:58 صبح
سلام و تشکر
من به جای اینکه در یک ستون نمایش بده و بین مقادیر آن "," بگذاره نیاز دارم که هر کدوم را در یک فیلد نمایش بده

دقیقا اینطوری:



2011-08-09
183000000
2011-09-09
103000000
2012-08-09
151000000
2012-08-11
171000000

sg.programmer
یک شنبه 12 دی 1395, 14:59 عصر
با عقل جور در نمیاد- با برنامه نویسی بیا اینکار را انجام بده - با TSQLE هم فکرکنم بشه

codedeveloper
یک شنبه 12 دی 1395, 15:41 عصر
select *
from
(
select value, columnname
from yourtable
) d
pivot
(
max(value)
for columnname in (Firstname, Amount, PostalCode, LastName, AccountNumber)
) piv;

Seyyed_H_T
دوشنبه 13 دی 1395, 18:50 عصر
برای ارائه ی خروجی Dynamic شما به Dynamic SQL احتیاج دارید:



declare @i int = 0, @sql nvarchar(max);
select @i = @i + 1, @sql = coalesce(@sql, N'') + N',' + cast(bestankar as nvarchar) + N' as bes' + cast(@i as nvarchar) + ',cast(''' + cast(Tdate as nvarchar) + ''' as date) as date' + cast(@i as nvarchar)
from yourTable;
select @sql = N'select ' + substring(@sql, 2, 20000);
exec(@sql);

nasr
سه شنبه 14 دی 1395, 15:17 عصر
برای ارائه ی خروجی Dynamic شما به Dynamic SQL احتیاج دارید:



declare @i int = 0, @sql nvarchar(max);
select @i = @i + 1, @sql = coalesce(@sql, N'') + N',' + cast(bestankar as nvarchar) + N' as bes' + cast(@i as nvarchar) + ',cast(''' + cast(Tdate as nvarchar) + ''' as date) as date' + cast(@i as nvarchar)
from yourTable;
select @sql = N'select ' + substring(@sql, 2, 20000);
exec(@sql);






عالی بود
دقیقا همین را میخواستم:تشویق::تشویق: