Динамическая сводная таблица SQL Server хранимой процедуры или в отчетах Crysal - PullRequest
0 голосов
/ 24 июня 2018

Я борюсь с поиском решения для отчета из динамической сводной таблицы в SQL Server в Crystal Report или для слияния с хранимой процедурой.

DECLARE @Columns as VARCHAR(MAX)

SELECT @Columns = COALESCE(@Columns + ', ','') + QUOTENAME(loc_id)
FROM
   (SELECT DISTINCT loc_id 
    FROM request_hd 
    WHERE entry_date = '2018-06-23' 
      AND valid = '1') AS B
ORDER BY B.loc_id

DECLARE @SQL as VARCHAR(MAX)

SET @SQL = 'SELECT item_code,item_ref,item_des,Shelf,WH_stock,WH_stockchk_qty, ' + @Columns + '
FROM
(
  SELECT I.item_code,
  I.item_ref,
  I.item_des,
  I.unit_qty,
  L.loc_id AS LocationName, 
     (select Sum(qty) from stock where stock.item_code = I.item_code and loc_id = ''901'' ) as WH_stock,
(select isnull(sum(qty),0) from stock_chk where stock_chk.item_code = I.item_code and loc_id like ''901'') as WH_stockchk_qty,
 (CAST( (Q.shelf_desc) AS VARCHAR)+''-''+CAST( (Q.shelf_rowSCOUNT) AS VARCHAR)+CAST( (Q.shelf_rowlength) AS VARCHAR)) as Shelf
from request_tran I, request_hd L, shelf_detail P, shelf_mast Q
 where I.entry_no= L.entry_no and I.item_code=P.item_code and P.shelf_id= Q.shelf_id 
 and P.sec_id= Q.sec_id and   L.entry_date >= ''2018-06-23'' and L.entry_date <= ''2018-06-23''  and L.valid = ''1''


) as PivotData
PIVOT
(
   SUM(unit_qty)
   FOR LocationName IN (' + @Columns + ')
) AS PivotResult
ORDER BY Shelf'

EXEC(@SQL)

Этот код работает в соответствии с моей концепцией.

РЕЗУЛЬТАТ

This is the result

Я хочу этот отчет в Crystal Reports, я перепробовал много вещей, к сожалению, его не удалось

ПожалуйстаЯ новичок в таблице PIVOT в SQL Server.Пожалуйста, помогите мне решить эту проблему

1 Ответ

0 голосов
/ 25 июня 2018

Используйте необработанные данные и позвольте Crystal сделать поворот, используя CrossTab. Это упростит задачу и обеспечит, чтобы результирующий набор всегда имел одинаковые столбцы.

...