在 Codeigniter 中使用 SQL 服务器变量

Use SQL Server Variable in Codeigniter

我有 SQL,当我 运行 它在 Sql 编辑它的工作时,但是当我 运行 它在 Codeigniter

上时有任何问题
    DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(SUBSTRING(c.ADD_TIME,0,9)) 
            FROM TDS_PROD_TRANS c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'');
set @query='SELECT *,'+@cols+' FROM (
    SELECT PT.DEFECT_NO,SUBSTRING(PT.ADD_TIME,0,9) AS ADD_DATE,SUM(PT.QTY) QTY,
    PT.DEFECT_NM,ISNULL(L.LIB_NM, ''OTHER'') AS AREA_NM
    FROM TDS_PROD_TRANS PT
    LEFT JOIN TDS_DEFECT TD ON PT.DEFECT_NO=TD.DEFECT_NO AND TD.STOP_MK=''N''
    LEFT JOIN CMN_LIBRARY L ON TD.DEFECT_DESC=L.LIB_NO AND L.KIND=''AREA'' AND L.STOP_MK=''N''
    GROUP BY SUBSTRING(PT.ADD_TIME,0,9),PT.DEFECT_NO,PT.DEFECT_NM,L.LIB_NM
)TBL
PIVOT(SUM(QTY) FOR  ADD_DATE IN('+@cols+')) AS ER'
execute(@query);

当我 运行 它在 CI 上时它只显示选定的列而没有数据透视列,这里是我在 CI

上的代码
function defectDailyQuery(){
    $this->dev = $this->load->database("DEV", TRUE);
    return $this->dev->query("
    DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(SUBSTRING(c.ADD_TIME,0,9)) 
            FROM TDS_PROD_TRANS c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'');
set @query='SELECT *,'+@cols+' FROM (
    SELECT PT.DEFECT_NO,SUBSTRING(PT.ADD_TIME,0,9) AS ADD_DATE,SUM(PT.QTY) QTY,
    PT.DEFECT_NM,ISNULL(L.LIB_NM, ''OTHER'') AS AREA_NM
    FROM TDS_PROD_TRANS PT
    LEFT JOIN TDS_DEFECT TD ON PT.DEFECT_NO=TD.DEFECT_NO AND TD.STOP_MK=''N''
    LEFT JOIN CMN_LIBRARY L ON TD.DEFECT_DESC=L.LIB_NO AND L.KIND=''AREA'' AND L.STOP_MK=''N''
    GROUP BY SUBSTRING(PT.ADD_TIME,0,9),PT.DEFECT_NO,PT.DEFECT_NM,L.LIB_NM
)TBL
PIVOT(SUM(QTY) FOR  ADD_DATE IN('+@cols+')) AS ER'
execute(@query);
    ");
}

没有正文回答,所以我决定在后端管理数据