ورود

View Full Version : تغییر جدول از افقی به عمودی



babak3332000
سه شنبه 20 تیر 1402, 15:03 عصر
با درود به دوستان عزیز

یه جدول داریم شامل کد ملی و نام بیماری
مانند شکل زیر

154806

میخواهم برعکس بشه .... یعنی برای هر کد ملی ...... بیماری هاش داخل ستون های مختلف وارد بشود

تقریبن همون Pivot
به شکل زیر در بیاد

154807

دوستان ممنون میشم دستور یا کوئری ش را راهنمایی بفرمایید

babak3332000
سه شنبه 20 تیر 1402, 22:38 عصر
از اساتید ..... کسی بلد نیست؟

babak3332000
سه شنبه 20 تیر 1402, 22:47 عصر
حالا اگه بشه ... بیماری ها را در یک رشته با هم یکی کرد .... اینهم خوبه

شبیه این دستور

Concatenate Multiple Rows Using FOR XML PATH s

mazoolagh
چهارشنبه 21 تیر 1402, 08:29 صبح
درود و روز شما خوش
پرسش مشابه داشتیم:

برگرداندن سطرها در ستونها (https://barnamenevis.org/showthread.php?570758)

fakhravari
شنبه 24 تیر 1402, 08:13 صبح
declare @query Nvarchar(max)=''
DECLARE @Vahed AS NVARCHAR(MAX)
If(OBJECT_ID('tempdb..#PivotTable') Is Not Null)
Begin
Drop Table #PivotTable
End



SELECT SUM(g.tedad_Daryaft) AS tedad_Daryaft,ns.Name_Farsi_Sanad,k.Kala_FarsiDesc ,k.Kala_Code ,f.VahedeAndazegiri_Name
INTO #PivotTable
FROM WareHouse.INV_Havaleh_Master s
JOIN WareHouse.INV_DarkhasteKala_Details g ON g.Havaleh_ID = s.Havaleh_ID
JOIN WareHouse.INV_Kala k ON k.Kala_ID = g.KALA_ID
JOIN WareHouse.INV_NoeSanad ns ON ns.NoeSanad_ID = s.NoeSanad_ID
JOIN WareHouse.INV_VahedeAndazegiri f ON f.VahedeAndazegiri_ID = k.Kala_VahedeAndazegiri
WHERE s.ComAnb_ID IN(SELECT x.ComAnb_ID FROM dbo.AllAnbarInfo x WHERE x.ShowInsite=1)
AND ns.NoeSanadTafkik_ID NOT IN(7)
AND LEFT(s.Havaleh_Tarikh,4)='1401'
AND k.Kala_Code IN(SELECT DISTINCT Id FROM dbo.ToTableVarchar('1601000020,1601000021,16010000 39,1601000022,1601000040,1601000040,1601000041,160 1000039,1601000041'))
AND ns.Name_Farsi_Sanad IN(N'فروش',N'فروش پرسنل')
GROUP BY ns.Name_Farsi_Sanad,k.Kala_FarsiDesc,k.Kala_Code ,f.VahedeAndazegiri_Name
ORDER BY k.Kala_FarsiDesc





select
@Vahed = ISNULL(@Vahed,'') + CASE
WHEN ISNULL(@Vahed,'') = '' THEN
'[' + Name_Farsi_Sanad + ']' else
',[' + Name_Farsi_Sanad + ']'
end
from #PivotTable
group by Name_Farsi_Sanad


set @query='


select * from #PivotTable
p
PIVOT
(
sum(tedad_Daryaft)
FOR Name_Farsi_Sanad in (' + @Vahed + ')
) AS PivotTable_M
'
print @query


exec (@query)