SQL üzerinde Pivot içindeki in Kullanımı hakkında - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Veri Tabanı (https://www.delphican.com/forumdisplay.php?fid=4) +--- Forum: MS SQL Server (https://www.delphican.com/forumdisplay.php?fid=103) +--- Konu Başlığı: SQL üzerinde Pivot içindeki in Kullanımı hakkında (/showthread.php?tid=2073) Sayfalar:
1
2
|
SQL üzerinde Pivot içindeki in Kullanımı hakkında - adelphiforumz - 19-03-2018 Herkese Selamlar ve iyi haftalar. MS Sql server üzerinde Pivot kullanımındaki In ifadesini Select ile yapmak mümkün müdür? Bu konuda fikri olan var mı? Teşekkürler. SQL üzerinde Pivot içindeki in Kullanımı hakkında - csunguray - 19-03-2018 Yapmak istediğinizi kodla örnek verebilir misiniz? Cvp: SQL üzerinde Pivot içindeki in Kullanımı hakkında - adelphiforumz - 19-03-2018 Resim eklemedim fakat örnek bir data ve sorgu oluşturdum Yapmak istediğim Pivot'a bağlı In içinde verilen ifadeleri bir Select sorgusu ile çekip göndermek CREATE TABLE [dbo].[TestPivotAvans]( [IdAvans] [int] IDENTITY(1,1) NOT NULL, [IdPersonel] [int] NULL CONSTRAINT [DF_TestPivotAvans_IdPersonel] DEFAULT ((0)), [Tarih] [datetime] NULL CONSTRAINT [DF_TestPivotAvans_Tarih] DEFAULT (getdate()), [Ay] [tinyint] NULL, [Hafta] [tinyint] NULL, [Tutar] [decimal](15, 4) NULL CONSTRAINT [DF_TestPivotAvans_Tutar] DEFAULT ((0)), CONSTRAINT [PK_TestPivotAvans] PRIMARY KEY CLUSTERED ( [IdAvans] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO CREATE TABLE [dbo].[TestPivotPersonel]( [IdPersonel] [int] IDENTITY(1,1) NOT NULL, [Ad] [nvarchar](50) NULL, [Soyad] [nvarchar](50) NULL, CONSTRAINT [PK_TestPivotPersonel] PRIMARY KEY CLUSTERED ( [IdPersonel] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET IDENTITY_INSERT [dbo].[TestPivotAvans] ON GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (1, 1, CAST(N'2018-01-19 00:00:00.000' AS DateTime), 1, 3, CAST(5.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (2, 1, CAST(N'2018-02-01 00:00:00.000' AS DateTime), 2, 5, CAST(8.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (3, 1, CAST(N'2018-02-05 00:00:00.000' AS DateTime), 2, 6, CAST(5.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (4, 1, CAST(N'2018-03-14 00:00:00.000' AS DateTime), 3, 11, CAST(20.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (5, 1, CAST(N'2018-02-14 00:00:00.000' AS DateTime), 2, 7, CAST(40.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (6, 1, CAST(N'2018-03-06 00:00:00.000' AS DateTime), 3, 10, CAST(70.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (7, 1, CAST(N'2018-03-08 00:00:00.000' AS DateTime), 3, 10, CAST(90.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (8, 1, CAST(N'2018-03-05 00:00:00.000' AS DateTime), 3, 10, CAST(45.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (9, 2, CAST(N'2018-02-07 00:00:00.000' AS DateTime), 2, 6, CAST(78.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (10, 2, CAST(N'2018-03-14 00:00:00.000' AS DateTime), 3, 11, CAST(25.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (11, 2, CAST(N'2018-02-21 00:00:00.000' AS DateTime), 2, 8, CAST(65.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (12, 2, CAST(N'2018-01-09 00:00:00.000' AS DateTime), 1, 2, CAST(9.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (13, 2, CAST(N'2018-02-13 00:00:00.000' AS DateTime), 2, 7, CAST(42.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (14, 2, CAST(N'2018-02-19 00:00:00.000' AS DateTime), 2, 8, CAST(15.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (15, 3, CAST(N'2018-02-01 00:00:00.000' AS DateTime), 2, 5, CAST(73.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (16, 3, CAST(N'2018-03-05 00:00:00.000' AS DateTime), 3, 10, CAST(21.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (17, 3, CAST(N'2018-03-12 00:00:00.000' AS DateTime), 3, 11, CAST(85.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (18, 4, CAST(N'2018-02-06 00:00:00.000' AS DateTime), 2, 6, CAST(40.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (19, 4, CAST(N'2018-02-03 00:00:00.000' AS DateTime), 2, 5, CAST(68.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (20, 4, CAST(N'2018-03-05 00:00:00.000' AS DateTime), 3, 10, CAST(20.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (21, 4, CAST(N'2018-02-16 00:00:00.000' AS DateTime), 2, 7, CAST(17.0000 AS Decimal(15, 4))) GO INSERT [dbo].[TestPivotAvans] ([IdAvans], [IdPersonel], [Tarih], [Ay], [Hafta], [Tutar]) VALUES (22, 4, CAST(N'2018-03-17 00:00:00.000' AS DateTime), 3, 11, CAST(21.0000 AS Decimal(15, 4))) GO SET IDENTITY_INSERT [dbo].[TestPivotAvans] OFF GO SET IDENTITY_INSERT [dbo].[TestPivotPersonel] ON GO INSERT [dbo].[TestPivotPersonel] ([IdPersonel], [Ad], [Soyad]) VALUES (1, N'Ali', N'Demir') GO INSERT [dbo].[TestPivotPersonel] ([IdPersonel], [Ad], [Soyad]) VALUES (2, N'Veli', N'Tunç') GO INSERT [dbo].[TestPivotPersonel] ([IdPersonel], [Ad], [Soyad]) VALUES (3, N'Ayşe', N'Demir') GO INSERT [dbo].[TestPivotPersonel] ([IdPersonel], [Ad], [Soyad]) VALUES (4, N'Fatma', N'Tunç') GO SET IDENTITY_INSERT [dbo].[TestPivotPersonel] OFF GO Select Ad, Soyad, Ay, Hafta, Tutar from TestPivotPersonel PR left outer join TestPivotAvans AV on AV.IdPersonel = PR.IdPersonel order by Hafta go Select * from (Select PR.Ad, PR.soyad, AV.Hafta, Tutar from TestPivotPersonel PR left outer join TestPivotAvans AV on AV.IdPersonel = PR.IdPersonel ) Tmp PIVOT (sum(Tutar) for Hafta in ([2],[3],[5],[6],[7],[8],[10],[11]) ) as A go Cvp: SQL üzerinde Pivot içindeki in Kullanımı hakkında - hassur - 19-03-2018 (19-03-2018, Saat: 12:40)adelphiforumz Adlı Kullanıcıdan Alıntı: Resim eklemedim fakat örnek bir data ve sorgu oluşturdum Banada böyle bir sorgu lazım olmuştu. Ben şu şekilde çözdüm in içerisine yazağım değerleri bir string değişkenine dögü yardımı ile doldurdum ve aşağıdaki gibi kullandım SET @LIST=N' SELECT * FROM ( SELECT T.CARIKODU ,T.UNVAN ,T.FIRMANO ,T.VERGINO ,sum(T.BAKIYE) as BAKIYE , (select sum(BAKIYE) FROM #LISTE L WHERE L.VERGINO=T.VERGINO) AS GENELTOPLAM FROM #LISTE T group by CARIKODU ,UNVAN,VERGINO,FIRMANO ) as gTablo PIVOT ( SUM(gTablo.BAKIYE) FOR FIRMANO IN ('+@FIRMALAR+') ) AS p' EXEC (@LIST) SQL üzerinde Pivot içindeki in Kullanımı hakkında - adelphiforumz - 19-03-2018 hassur bende aynı şekilde kullanıyorum fakat select ile alınması mümkün olurmu onu öğrenmek istedim yada başka kullanım yolları varmıdır acaba Cvp: SQL üzerinde Pivot içindeki in Kullanımı hakkında - elixir84 - 19-03-2018 (19-03-2018, Saat: 14:20)adelphiforumz Adlı Kullanıcıdan Alıntı: hassur bende aynı şekilde kullanıyorum fakat select ile alınması mümkün olurmu onu öğrenmek istedim yada başka kullanım yolları varmıdır acaba Tam olarak neyi görmek? Ben soruyu tam anlamadım da. SQL üzerinde Pivot içindeki in Kullanımı hakkında - adelphiforumz - 19-03-2018 Yaptığım örneği çalıştırabilirseniz gelen sonuçta yapmak istediğimi görürsünüz Yani PIVOT (sum(Tutar) for Hafta in ([2],[3],[5],[6],[7],[8],[10],[11]) ) as A kısmındaki köşeli parantez içeriğini Select ile verebilirmiyim Soru tam olarak bu PIVOT (sum(Tutar) for Hafta in ((Select X From XXX group by X)) ) as A Cvp: SQL üzerinde Pivot içindeki in Kullanımı hakkında - elixir84 - 19-03-2018 (19-03-2018, Saat: 15:52)adelphiforumz Adlı Kullanıcıdan Alıntı: Yaptığım örneği çalıştırabilirseniz gelen sonuçta yapmak istediğimi görürsünüz Çalıştırdık kardeşim sen bu yazdığını ilk yazsaydın daha açıklayıcı olurdu. Sql Server dynamic Pivot olarak geciyor sanırım. DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.HAFTA) FROM TestPivotAvans c WHERE 1=1 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'') set @query = ' Select * from (Select PR.Ad, PR.soyad, AV.Hafta, Tutar from TestPivotPersonel PR left outer join TestPivotAvans AV on AV.IdPersonel = PR.IdPersonel ) Tmp PIVOT (sum(Tutar) for Hafta IN ( ' + @cols + ') ) as A' execute(@query) SQL üzerinde Pivot içindeki in Kullanımı hakkında - adelphiforumz - 19-03-2018 "elixir84" öncelikle ilginize teşekkürler. fakat "hassur" arkadaşımıza verdiğim cevap sizin içinde geçerli Yani Select ile direkt yapmak, ayrı bir string içine atarak değil, Öğrenmeye çalıştığım şey buydu Cvp: SQL üzerinde Pivot içindeki in Kullanımı hakkında - elixir84 - 19-03-2018 (19-03-2018, Saat: 16:41)adelphiforumz Adlı Kullanıcıdan Alıntı: "elixir84" öncelikle ilginize teşekkürler. PIVOT komutunun yapısı bu şekilde diye biliyorum. select yapmak istiyorsan benim gönderdiğim örnek gibi kullanman gerekiyor. |