|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Monday, May 06, 2013 4:04 AM
Points: 22,
Visits: 32
|
|
can i create dynamic headers....
SELECT paymentID, [ASD], [BG],[SD] FROM (SELECT paymentID, CASE receivedType WHEN 'Dr' THEN Amount ELSE -1 * Amount END Amount, Reason FROM Payment) AS SourceTable PIVOT ( Sum(Amount) FOR Reason IN ([ASD], [BG], [SD]) ) AS PivotTable; //Here can i put SELECT statement for Dynamic Headers..
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Yesterday @ 11:25 PM
Points: 1,171,
Visits: 1,246
|
|
Select statement cannot be used directly to create headers. Here is how it can be done by creating a list of columns and then creating a PIVOT string which include those columns
DECLARE @ColStr VARCHAR(500), @SqlStr VARCHAR(MAX); -- Creating Column String WITH col_str AS (SELECT DISTINCT reason FROM Payment) SELECT @ColStr=ISNULL(@ColStr+',','')+Reason FROM col_str;
-- Creating pivot query SET @SqlStr ='SELECT paymentID, '+@ColStr+' FROM (SELECT paymentID, CASE receivedType WHEN ''Dr'' THEN Amount ELSE -1 * Amount END Amount, Reason FROM Payment) AS SourceTable PIVOT ( Sum(Amount) FOR Reason IN ('+@ColStr+') ) AS PivotTable '
-- Execute Query EXEC (@SqlStr);
~ Lokesh Vij
Guidelines for quicker answers on T-SQL question Guidelines for answers on Performance questions
Link to my Blog Post --> www.SQLPathy.com
Follow me @Twitter

|
|
|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Monday, May 06, 2013 4:04 AM
Points: 22,
Visits: 32
|
|
Here i got some kind of error..all columns filled with Null...why?.I couldn't find what..please help me sir,,,
/****** Object: Table [dbo].[paymentHistory] Script Date: 02/06/2013 13:56:10 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[paymentHistory]( [PaymentHistoryID] [int] IDENTITY(1,1) NOT NULL, [paymentID] [int] NULL, [receivedAmout] [money] NULL, [receivedDate] [datetime] NULL, [receivedType] [varchar](30) NULL, [BankName] [varchar](100) NULL, [Reason] [varchar](100) NULL, [cheque_DD_no] [varchar](100) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[paymentHistory] ON INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (1, 11, 5000.0000, CAST(0x0000A15900000000 AS DateTime), N'Dr', N'axis', N'ASD', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (2, 12, 4000.0000, CAST(0x0000A15900000000 AS DateTime), N'Cr', N'axis', N' BG', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (3, 11, 8000.0000, CAST(0x0000A15900000000 AS DateTime), N'Cr', N'axis', N' BG', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (4, 11, 3000.0000, CAST(0x0000A15900000000 AS DateTime), N'Dr', N'axis', N' SD', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (5, 11, 3000.0000, CAST(0x0000A15900000000 AS DateTime), N'Cr', N'axis', N'ASD', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (6, 13, 50000.0000, CAST(0x0000A15B00000000 AS DateTime), N'Cr', N'axis valasai', N'ASD', N'123456') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (7, 13, 50000.0000, CAST(0x0000A15B00000000 AS DateTime), N'Cr', N'axis valasai', N'ASD', N'123456') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (8, 13, 1000.0000, CAST(0x0000A15B00000000 AS DateTime), N'Cr', N'', N'ASD', N'') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (9, 13, 500.0000, CAST(0x0000A15B00000000 AS DateTime), N'Cr', N'', N'ASD', N'') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (10, 14, 50000.0000, CAST(0x0000A15D00000000 AS DateTime), N'Cr', N'axis', N' FDR', N'54567') SET IDENTITY_INSERT [dbo].[paymentHistory] OFF
---My query--------- declare @col_Str varchar(max) , @SQl_Query varchar(max); WITH col as (Select Distinct Reason from paymentHistory ) select @col_Str=isnull(@col_Str+',','')+reason from col; set @SQl_Query ='select paymentid,'+@col_Str+' from (select paymentID, CASE receivedType when ''Dr'' then receivedAmout else -1* receivedAmout End receivedAmout ,Reason from paymentHistory)as sourcetable PIVOT( sum(receivedAmout) for reason IN ('+@col_Str+') ) as Pivota ' exec (@SQl_Query);
|
|
|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Monday, May 06, 2013 4:04 AM
Points: 22,
Visits: 32
|
|
Here i got some kind of error..all columns filled with Null...why?.I couldn't find what..please help me sir,,,
/****** Object: Table [dbo].[paymentHistory] Script Date: 02/06/2013 13:56:10 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[paymentHistory]( [PaymentHistoryID] [int] IDENTITY(1,1) NOT NULL, [paymentID] [int] NULL, [receivedAmout] [money] NULL, [receivedDate] [datetime] NULL, [receivedType] [varchar](30) NULL, [BankName] [varchar](100) NULL, [Reason] [varchar](100) NULL, [cheque_DD_no] [varchar](100) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[paymentHistory] ON INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (1, 11, 5000.0000, CAST(0x0000A15900000000 AS DateTime), N'Dr', N'axis', N'ASD', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (2, 12, 4000.0000, CAST(0x0000A15900000000 AS DateTime), N'Cr', N'axis', N' BG', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (3, 11, 8000.0000, CAST(0x0000A15900000000 AS DateTime), N'Cr', N'axis', N' BG', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (4, 11, 3000.0000, CAST(0x0000A15900000000 AS DateTime), N'Dr', N'axis', N' SD', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (5, 11, 3000.0000, CAST(0x0000A15900000000 AS DateTime), N'Cr', N'axis', N'ASD', N'12345') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (6, 13, 50000.0000, CAST(0x0000A15B00000000 AS DateTime), N'Cr', N'axis valasai', N'ASD', N'123456') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (7, 13, 50000.0000, CAST(0x0000A15B00000000 AS DateTime), N'Cr', N'axis valasai', N'ASD', N'123456') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (8, 13, 1000.0000, CAST(0x0000A15B00000000 AS DateTime), N'Cr', N'', N'ASD', N'') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (9, 13, 500.0000, CAST(0x0000A15B00000000 AS DateTime), N'Cr', N'', N'ASD', N'') INSERT [dbo].[paymentHistory] ([PaymentHistoryID], [paymentID], [receivedAmout], [receivedDate], [receivedType], [BankName], [Reason], [cheque_DD_no]) VALUES (10, 14, 50000.0000, CAST(0x0000A15D00000000 AS DateTime), N'Cr', N'axis', N' FDR', N'54567') SET IDENTITY_INSERT [dbo].[paymentHistory] OFF
---My query--------- declare @col_Str varchar(max) , @SQl_Query varchar(max);
WITH col as (Select Distinct Reason from paymentHistory ) select @col_Str=isnull(@col_Str+',','')+reason from col; set @SQl_Query ='select paymentid,'+@col_Str+' from (select paymentID, CASE receivedType when ''Dr'' then receivedAmout else -1* receivedAmout End receivedAmout ,Reason from paymentHistory)as sourcetable PIVOT( sum(receivedAmout) for reason IN ('+@col_Str+') ) as Pivota ' exec (@SQl_Query);
|
|
|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Monday, May 06, 2013 4:04 AM
Points: 22,
Visits: 32
|
|
sir , i want to use '0' instead of null.here i couldn't use isNull().why?
|
|
|
|