問題截圖如下:
諮詢智友人員,稱在SQL中,SELECT 中的字段不能重名,但經檢查SELEC 中的字段沒有重複的。
後臺觀察SQL語句,發現有後臺分頁語句:
select identity(int,1,1) as r___n,* INTO #__temptable
FROM (
SELECT a.Dates,a.OnTime,a.BillNo,a.BillCode,c.ORGID,c.ORGNAME AS businessname,d.DEPARTMENT,e.STAFFNAME AS SaleManName
,g.BusinessCode
--,g.BusinessName AS BusinessName1
,f.STAFFNAME AS CaozyName
,CASE WHEN a.kk_kplx ='1' THEN '器械' ELSE '非器械' END kk_kplx
,CASE WHEN a.kk_ddlx ='3' THEN '領用' WHEN a.kk_ddlx ='4' THEN '歸還' ELSE '領用' END AS kk_ddlx
,a.kk_islc
,b.billSn,b.BillSort,h.GoodsId,h.GoodsCode,h.GoodsName,h.GoodsSpec,i.kk_ylqxbah,h.Manufacturer,i.kk_Meas,b.unit
,j.WHName,k.BatchCode,k.SterilCode,k.ProduceDate,k.ValDate
,b.Num,b.Price,b.Taxprice,b.Amount,b.Rate,b.Tax,b.TaxAmount,b.Cost,b.CostAmt,b.Profit
,i.kk_ylqxsch,i.InstRegNo,i.kk_qxzcrq,i.InstRegValDate,i.kk_qxfzjg
,a.Remark
FROM SALEOUTMT AS a
INNER JOIN SALEOUTDT AS b ON a.EntId = b.EntId AND a.BillNo = b.BillNo
INNER JOIN ORGDOC AS c ON a.EntId = c.ENTID AND a.ClientId = c.ORGID
INNER JOIN DEPTDOC AS d ON a.EntId = d.ENTID AND a.DeptId = d.DEPTID and d.entid= 'E2SVHJM7RVQ'
INNER JOIN STAFFDOC AS e ON a.EntId = e.ENTID AND a.SaleManId = e.STAFFID and e.entid= 'E2SVHJM7RVQ'
INNER JOIN STAFFDOC AS f ON a.EntId = f.ENTID AND a.caozy = f.STAFFID and f.entid= 'E2SVHJM7RVQ'
LEFT JOIN BUSINESSDOC AS g ON a.EntId =g.EntId AND a.KK_BusinessId = g.BusinessId
INNER JOIN GOODSDOC AS h ON b.EntId = h.EntId AND b.GoodsId = h.GoodsId and h.entid= 'E2SVHJM7RVQ'
INNER JOIN GOODSATTR AS i ON h.EntId = i.EntId AND h.GoodsId = i.GoodsId
INNER JOIN STOREHOUSE AS j ON b.EntId = j.EntId AND b.WHId = j.WHId
INNER JOIN BATCHCODE AS k ON b.EntId = k.EntId AND b.GoodsId =k.GoodsId AND b.AngleId = k.AngleId
WHERE a.RuleId ='0pa1ysk18roo3ay8' and a.entid = 'E2SVHJM7RVQ'
and a.Dates >= '2019-11-01' and a.Dates <= '2019-11-08'
and a.orgid='O2SVHJM7TKU' and a.billcode like '%'
ORDER by a.BillCode
) a
SELECT * from #__temptable where r___n <= 500 and r___n > 0
DROP table #__temptable
執行上面語句報錯
原因找到了
解決辦法:
1.刪除ORDER by a.BillCode 排序,就正常,但沒有排序又不行;
2.在SELECT 增加TOP 100 PERCENT,再執行沒報錯
top 100 percent是指返回符合條件的100%的記錄,即所有符合條件的記錄
更換SQL宏以後運行正常