Monday 14 May 2012

Learn Pivot Table

DECLARE @PivotColumnHeaders VARCHAR(MAX)
SELECT @PivotColumnHeaders =
  COALESCE(
    @PivotColumnHeaders + ',[' + cast(propertyName as varchar(55)) + ']',
    '[' + cast(propertyName as varchar(55))+ ']'
  )
FROM property
print @PivotColumnHeaders
DECLARE @PivotTableSQL NVARCHAR(MAX)
SET @PivotTableSQL = N'
  SELECT *
  FROM (
    SELECT
     propertyname,value
    FROM propertyvalue inner join Property
    on propertyvalue.propertyid = property.propertyid
    inner join organisationentity
    on organisationentity.organisationId = propertyvalue.entityobjectid
  
  ) AS PivotData
  PIVOT (
    max(value)
    FOR propertyname IN (
      ' + @PivotColumnHeaders + '
    )
  ) AS PivotTable
'
Print @PivotTableSQL
EXECUTE(@PivotTableSQL)

Trigger

ALTER TRIGGER [dbo].[lelnoSearch] ON [dbo].[tblProductPropertyValue]
FOR INSERT, update,delete
AS

    declare @lelno int;   
  
    ---check for lelno named property
    select @lelno=i.Value ,@name=pp.PropertyName,@productid=i.ProductId from inserted i
left join tblProduct as p
on i.ProductId=p.ProductId
left join tblProductProperty as pp
on i.PropertyId=pp.PropertyId
where pp.PropertyName='lelno';

--check if data exists for coming productid
select @check=id from tblSearch where tblsearch.ProductId=@productid


 if @lelno <>null or @lelno is not null begin
 print @lelno
    if @check is not NULL or @check <>NULL
    update tblSearch  set lElNo=@lelno where productId=@productid
    else
        insert into tblSearch
               (lElNo,productId)               
        values(@lelno,@productid);
end