Declare @sql=' select xxxxxxxxxxxxxxxxx' set @sql=@sql+' From T1 inner join table2 where wwwwwwwwwwwww'
Alter Proc rsp_IC_PackingList_CrossTab (@po_no nvarchar(32))ASBEGIN DECLARE cShips CURSOR FOR SELECT ShipmentDate,Id From tab_ic_packing_list_shipment WHERE PackingListNo=@po_no ORDER BY 1 Declare @sql as varchar( 8000) Set @sql='SELECT dbo.tab_IC_Packing_List_Detail.ItemCode, (SELECT Description FROM dbo.tab_ic_itemcode WHERE dbo.tab_Ic_itemcode.itemcode = dbo.tab_IC_Packing_List_Detail.ItemCode) AS Description, dbo.tab_IC_Packing_List_Detail.SizeGroupID, dbo.tab_IC_Packing_List_Detail.Cost, dbo.tab_IC_Packing_List_Detail.Qty, dbo.tab_IC_Packing_List_Detail.Discount, dbo.tab_IC_Packing_List_Detail.Qty * Cost * (1-Discount) as GrantTotal, dbo.tab_IC_Packing_List_Detail.FOC, dbo.tab_IC_Packing_List_Detail.Qty + dbo.tab_IC_Packing_List_Detail.FOC as PoFOC, dbo.tab_IC_Packing_List_Detail.CreateDate,' + char(13) --WHERE state = ORDER BY 1 DECLARE @ShipmentDate DateTime Declare @id as varchar(5000) OPEN cShips FETCH NEXT FROM cShips INTO @ShipmentDate,@id Declare @i as int Set @i=0 WHILE @@FETCH_STATUS = 0 BEGIN set @i=@i+1 Set @sql=@sql + ' SUM(CASE ShipmentId WHEN '+ char(39)+@id+char(39)+' THEN dbo.tab_IC_Packing_List_Shipment_Detail.Qty ELSE 0 END) AS ShipQty'+Cast(@i as varchar) +','+char(13) Set @sql=@sql+ ' SUM(CASE ShipmentId WHEN '+ char(39)+@id+char(39)+' THEN dbo.tab_IC_Packing_List_Shipment_Detail.Foc ELSE 0 END) AS ShipFoc'+Cast(@i as varchar) +','+char(13) Set @sql=@sql+ ' SUM(CASE ShipmentId WHEN '+ char(39)+@id+char(39)+' THEN dbo.tab_IC_Packing_List_Shipment_Detail.Qty*Cost*(1-Discount) ELSE 0 END) AS ShipAmt'+Cast(@i as varchar) +','+char(13) FETCH NEXT FROM cShips INTO @ShipmentDate,@id END Close cShips Deallocate cShips Set @sql=@sql+ '(select Sum(QtyInMainUnit) FROM tab_IC_Item_In_Location WHERE tab_IC_Item_In_Location.ItemCode=dbo.tab_IC_Packing_List_Detail.ItemCode AND tab_IC_Item_In_Location.SizeGroupID=dbo.tab_IC_Packing_List_Detail.SizeGroupID) As StockBalance, (Select sum(QtyInMainUnit)/9 From tab_SO_Invoice_Summary WHERE tab_SO_Invoice_Summary.Item=tab_IC_Packing_List_Detail.ItemCode And tab_SO_Invoice_Summary.SizeGroupId=tab_IC_Packing_List_Detail.SizeGroupId And tab_SO_Invoice_Summary.CreateDate Between DateAdd(m,-9,tab_IC_Packing_List_Detail.CreateDate)AND tab_IC_Packing_List_Detail.CreateDate) As Avg9Month, tab_IC_Packing_List_Detail.Remark ' + char(13) Set @sql=@sql+' FROM dbo.tab_IC_Packing_List_Detail INNER JOIN dbo.tab_IC_Packing_List_Shipment_Detail ON dbo.tab_IC_Packing_List_Detail.TransID = dbo.tab_IC_Packing_List_Shipment_Detail.PODetailID' + char(13) Set @sql=@sql+' WHERE dbo.tab_IC_Packing_List_Detail.PackingListNo='+ char(39)+ @po_no + char(39) + char(13) Set @sql=@sql+'GROUP BY dbo.tab_IC_Packing_List_Detail.ItemCode, dbo.tab_IC_Packing_List_Detail.SizeGroupID, dbo.tab_IC_Packing_List_Detail.Cost, dbo.tab_IC_Packing_List_Detail.Qty, dbo.tab_IC_Packing_List_Detail.Discount, dbo.tab_IC_Packing_List_Detail.FOC, dbo.tab_IC_Packing_List_Detail.CreateDate, dbo.tab_IC_Packing_List_Detail.Remark' print(@sql) exec (@sql)ENDGO
Set @sql=@sql+' WHERE dbo.tab_IC_Packing_List_Detail.PackingListNo='+ char(39)+ @po_no + char(39) + char(13)
Alter Proc rsp_IC_PackingList_CrossTab (@po_no nvarchar(32))Ask yourself... what do you get when you concatenate a VARCHAR(8000) with an NVARCHAR of any length? ;)