在 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);
");
}
没有正文回答,所以我决定在后端管理数据
我有 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);
");
}
没有正文回答,所以我决定在后端管理数据