读书人

无法绑定由多个部分组成的标识符解决方

发布时间: 2012-03-22 17:43:57 作者: rapoo

无法绑定由多个部分组成的标识符
--4.药房发药单
SELECT
B.BCK01, A.BillNO, A.DeptID
, CASE WHEN A.DeptID=0 THEN '零售' ELSE (SELECT BCK03 FROM BCK1 WHERE BCK1.BCK01 = A.DeptID) END 部门名称
, B.VAA01, B.VAJ01, B.BBY01, Y.BBY04, Y.BBY05, Y.BBY06, B.Unit, B.PackSize, B.BatchNo
, B.Quantity AS Quantity4, B.PurchasePrice AS PurchasePrice4, B.PurchaseAmount AS PurchaseAmount4
, K.PresellPrice AS PresellPrice4, K.PresellPrice * B.Quantity AS PresellAmount4
, B.VAJ33 AS VAJ33A, B.VAJ38 AS VAJ38A
, 0 AS Quantity5, 0 AS PurchasePrice5, 0 AS PurchaseAmount5
, 0 AS PresellPrice5, 0 AS PresellAmount5
, 0 AS VAJ33B, 0 AS VAJ38B
, A.AuditingDate, A.Assessor
, A.Accepter, A.Dispenser, A.Sender, A.Ratifier, A.TradeID, B.DPK_ID, B.Remark
, Y.BBE02, T.BAP02, Q.BAX03, O.BDO03, G.BAG15
, K.ProduceDate, K.ExpiryDate
,F.VAA05
INTO #TMP_DPD
FROM DPD1 A join DPD2 B ON A.BCK01 = B.BCK01 and A.BillID = B.BillID
join VAA1 F ON F.VAA01 = B.VAA01
JOIN BBY1 Y ON Y.BBY01 = B.BBY01
left join BAX1 Q ON Q.BAX01 = Y.BAX01
join BAG1 G ON G.BBY01 = B.BBY01
left join BBX1 X ON X.BBX01 = G.BBX01
left join BBT1 T ON T.BBX01 = X.BBX01
left join BDO1 O ON O.BDO01 = X.BDO01
JOIN DPK1 K ON K.ID = B.DPK_ID
WHERE B.BCK01 = @PharmacyId
and B.Quantity > 0
and A.AuditingDate BETWEEN @BeginDate AND @EndDate
AND Y.BBY05 like @BBY05 + '%'
UNION ALL
SELECT
B.BCK01, A.BillNO, A.DeptID
, CASE WHEN A.DeptID=0 THEN '零售' ELSE (SELECT BCK03 FROM BCK1 WHERE BCK1.BCK01 = A.DeptID) END 部门名称
, B.VAA01, B.VAJ01, B.BBY01, Y.BBY04, Y.BBY05, Y.BBY06, B.Unit, B.PackSize, B.BatchNo
, B.Quantity AS Quantity4, B.PurchasePrice AS PurchasePrice4, B.PurchaseAmount AS PurchaseAmount4
, K.PresellPrice AS PresellPrice4, K.PresellPrice * B.Quantity AS PresellAmount4
, B.VAJ33 AS VAJ33A, B.VAJ38 AS VAJ38A
, 0 AS Quantity5, 0 AS PurchasePrice5, 0 AS PurchaseAmount5
, 0 AS PresellPrice5, 0 AS PresellAmount5
, 0 AS VAJ33B, 0 AS VAJ38B
, A.AuditingDate, A.Assessor
, A.Accepter, A.Dispenser, A.Sender, A.Ratifier, A.TradeID, B.DPK_ID, B.Remark
, Y.BBE02, T.BAP02, Q.BAX03, O.BDO03, G.BAG15
, K.ProduceDate, K.ExpiryDate
,F.VAA05
FROM DPD1_2 A join DPD2_2 B ON A.BCK01 = B.BCK01 and A.BillID = B.BillID
join VAA1 F ON F.VAA01 = B.VAA01 JOIN BBY1 Y ON Y.BBY01 = B.BBY01
left join BAX1 Q ON Q.BAX01 = Y.BAX01
join BAG1 G ON G.BBY01 = B.BBY01
left join BBX1 X ON X.BBX01 = G.BBX01
left join BBT1 T ON T.BBX01 = X.BBX01
left join BDO1 O ON O.BDO01 = X.BDO01
JOIN DPK1 K ON K.ID = B.DPK_ID
WHERE B.BCK01 = @PharmacyId
and B.Quantity > 0
and A.AuditingDate BETWEEN @BeginDate AND @EndDate
AND Y.BBY05 like @BBY05 + '%'
--5.药房退药单
UNION ALL
SELECT
B.BCK01, A.BillNO, A.DeptID
, CASE WHEN A.DeptID=0 THEN '零售' ELSE (SELECT BCK03 FROM BCK1 WHERE BCK1.BCK01 = A.DeptID) END 部门名称
, B.VAA01, B.VAJ01, B.BBY01, Y.BBY04, Y.BBY05, Y.BBY06, B.Unit, B.PackSize, B.BatchNo
, 0, 0, 0, 0, 0
, 0, 0
, -B.Quantity, B.PurchasePrice, -B.PurchaseAmount, K.PresellPrice, -K.PresellPrice * B.Quantity
, B.VAJ33 AS VAJ33B, B.VAJ38 AS VAJ38B
, A.AuditingDate, A.Assessor
, A.Accepter, A.Dispenser, A.Sender, A.Ratifier, A.TradeID, B.DPK_ID, B.Remark
, Y.BBE02, T.BAP02, Q.BAX03, O.BDO03, G.BAG15
, K.ProduceDate, K.ExpiryDate
,F.VAA05
FROM DPD1 A join DPD2 B ON A.BCK01 = B.BCK01 and A.BillID = B.BillID
join VAA1 F ON F.VAA01 = B.VAA01JOIN BBY1 Y ON Y.BBY01 = B.BBY01


Left join BAX1 Q ON Q.BAX01 = Y.BAX01
join BAG1 G ON G.BBY01 = B.BBY01
left join BBX1 X ON X.BBX01 = G.BBX01
left join BBT1 T ON T.BBX01 = X.BBX01
left join BDO1 O ON O.BDO01 = X.BDO01
JOIN DPK1 K ON K.ID = B.DPK_ID
WHERE B.Quantity < 0 AND B.BCK01 = @PharmacyId
and A.AuditingDate BETWEEN @BeginDate AND @EndDate
AND Y.BBY05 like @BBY05 + '%'
UNION ALL
SELECT
B.BCK01, A.BillNO, A.DeptID
, CASE WHEN A.DeptID=0 THEN '零售' ELSE (SELECT BCK03 FROM BCK1 WHERE BCK1.BCK01 = A.DeptID) END 部门名称
, B.VAA01, B.VAJ01, B.BBY01, Y.BBY04, Y.BBY05, Y.BBY06, B.Unit, B.PackSize, B.BatchNo
, 0, 0, 0, 0, 0
, 0, 0
, -B.Quantity, B.PurchasePrice, -B.PurchaseAmount, K.PresellPrice, -K.PresellPrice * B.Quantity
, B.VAJ33 AS VAJ33B, B.VAJ38 AS VAJ38B
, A.AuditingDate, A.Assessor
, A.Accepter, A.Dispenser, A.Sender, A.Ratifier, A.TradeID, B.DPK_ID, B.Remark
, Y.BBE02, T.BAP02, Q.BAX03, O.BDO03, G.BAG15
, K.ProduceDate, K.ExpiryDate
,F.VAA05
FROM DPD1_2 A join DPD2_2 B ON A.BCK01 = B.BCK01 and A.BillID = B.BillID
join VAA1 F ON F.VAA01 = B.VAA01JOIN BBY1 Y ON Y.BBY01 = B.BBY01
Left join BAX1 Q ON Q.BAX01 = Y.BAX01
join BAG1 G ON G.BBY01 = B.BBY01
left join BBX1 X ON X.BBX01 = G.BBX01
left join BBT1 T ON T.BBX01 = X.BBX01
left join BDO1 O ON O.BDO01 = X.BDO01
JOIN DPK1 K ON K.ID = B.DPK_ID
WHERE B.Quantity < 0 AND B.BCK01 = @PharmacyId
and A.AuditingDate BETWEEN @BeginDate AND @EndDate
AND Y.BBY05 like @BBY05 + '%'

SELECT A.BBY04 AS 药品_编号,F.VAA05 AS 姓名, A.BBY05 AS 药品_品名, A.BBY06 AS 药品_规格, A.Unit AS 单位
, A.BatchNo AS 产品批号, A.DeptID AS 部门ID, A.部门名称, A.AuditingDate AS 记帐时间
, A.Quantity4 AS 药房发药单_数量, A.PresellAmount4 AS 药房发药单_零价金额
, A.Quantity5 AS 药房退药单_数量, A.PresellAmount5 AS 药房退药单_零价金额
, A.Quantity4 - A.Quantity5 AS 实际发药_数量
, A.PresellAmount4 - A.PresellAmount5 AS 实际发药_零价金额
, A.BBE02 AS 产地, A.BAP02 AS 剂型, A.BAX03 AS 收入项目, A.BDO03 AS 药品分类
, A.BAG15 AS 批准文号, A.ProduceDate AS 生产日期, A.ExpiryDate AS 有效期至
, A.DPK_ID AS 批次号, A.Assessor AS 记帐人, A.BillNO AS 单号, A.Accepter AS 领药人, A.Dispenser AS 批准人
, A.Remark AS 备注
FROM #TMP_DPD A
WHERE 部门名称 LIKE @BCK03 + '%'
DROP TABLE #TMP_DPD


红色字体语句是我加的,为什么一加上就报“无法绑定由多个部分组成的标识符” 这个错?

[解决办法]
楼主把最后那个单独的查询不要放进来,直接看最上边的查询。

SQL code
--为了方便,我把带变量的条件去掉了SELECT  B.BCK01, A.BillNO, A.DeptID  , CASE WHEN A.DeptID=0 THEN '零售' ELSE (SELECT BCK03 FROM BCK1 WHERE BCK1.BCK01 = A.DeptID) END 部门名称  , B.VAA01, B.VAJ01, B.BBY01, Y.BBY04, Y.BBY05, Y.BBY06, B.Unit, B.PackSize, B.BatchNo  , B.Quantity AS Quantity4, B.PurchasePrice AS PurchasePrice4, B.PurchaseAmount AS PurchaseAmount4  , K.PresellPrice AS PresellPrice4, K.PresellPrice * B.Quantity AS PresellAmount4  , B.VAJ33 AS VAJ33A, B.VAJ38 AS VAJ38A  , 0 AS Quantity5, 0 AS PurchasePrice5, 0 AS PurchaseAmount5  , 0 AS PresellPrice5, 0 AS PresellAmount5  , 0 AS VAJ33B, 0 AS VAJ38B  , A.AuditingDate, A.Assessor  , A.Accepter, A.Dispenser, A.Sender, A.Ratifier, A.TradeID, B.DPK_ID, B.Remark  , Y.BBE02, T.BAP02, Q.BAX03, O.BDO03, G.BAG15  , K.ProduceDate, K.ExpiryDate  ,F.VAA05INTO #TMP_DPDFROM DPD1 A join DPD2 B ON A.BCK01 = B.BCK01 and A.BillID = B.BillID  join VAA1 F ON F.VAA01 = B.VAA01     JOIN BBY1 Y ON Y.BBY01 = B.BBY01  left join BAX1 Q ON Q.BAX01 = Y.BAX01join BAG1 G ON G.BBY01 = B.BBY01left join BBX1 X ON X.BBX01 = G.BBX01left join BBT1 T ON T.BBX01 = X.BBX01left join BDO1 O ON O.BDO01 = X.BDO01JOIN DPK1 K ON K.ID = B.DPK_IDWHERE B.Quantity > 0 UNION ALLSELECT  B.BCK01, A.BillNO, A.DeptID  , CASE WHEN A.DeptID=0 THEN '零售' ELSE (SELECT BCK03 FROM BCK1 WHERE BCK1.BCK01 = A.DeptID) END 部门名称  , B.VAA01, B.VAJ01, B.BBY01, Y.BBY04, Y.BBY05, Y.BBY06, B.Unit, B.PackSize, B.BatchNo  , B.Quantity AS Quantity4, B.PurchasePrice AS PurchasePrice4, B.PurchaseAmount AS PurchaseAmount4  , K.PresellPrice AS PresellPrice4, K.PresellPrice * B.Quantity AS PresellAmount4  , B.VAJ33 AS VAJ33A, B.VAJ38 AS VAJ38A  , 0 AS Quantity5, 0 AS PurchasePrice5, 0 AS PurchaseAmount5  , 0 AS PresellPrice5, 0 AS PresellAmount5  , 0 AS VAJ33B, 0 AS VAJ38B  , A.AuditingDate, A.Assessor  , A.Accepter, A.Dispenser, A.Sender, A.Ratifier, A.TradeID, B.DPK_ID, B.Remark  , Y.BBE02, T.BAP02, Q.BAX03, O.BDO03, G.BAG15  , K.ProduceDate, K.ExpiryDate,F.VAA05FROM DPD1_2 A join DPD2_2 B ON A.BCK01 = B.BCK01 and A.BillID = B.BillID  join VAA1 F ON F.VAA01 = B.VAA01 JOIN BBY1 Y ON Y.BBY01 = B.BBY01  left join BAX1 Q ON Q.BAX01 = Y.BAX01join BAG1 G ON G.BBY01 = B.BBY01left join BBX1 X ON X.BBX01 = G.BBX01left join BBT1 T ON T.BBX01 = X.BBX01left join BDO1 O ON O.BDO01 = X.BDO01JOIN DPK1 K ON K.ID = B.DPK_IDWHERE B.Quantity > 0--5.药房退药单UNION ALLSELECT  B.BCK01, A.BillNO, A.DeptID  , CASE WHEN A.DeptID=0 THEN '零售' ELSE (SELECT BCK03 FROM BCK1 WHERE BCK1.BCK01 = A.DeptID) END 部门名称  , B.VAA01, B.VAJ01, B.BBY01, Y.BBY04, Y.BBY05, Y.BBY06, B.Unit, B.PackSize, B.BatchNo  , 0, 0, 0, 0, 0  , 0, 0  , -B.Quantity, B.PurchasePrice, -B.PurchaseAmount, K.PresellPrice, -K.PresellPrice * B.Quantity  , B.VAJ33 AS VAJ33B, B.VAJ38 AS VAJ38B  , A.AuditingDate, A.Assessor  , A.Accepter, A.Dispenser, A.Sender, A.Ratifier, A.TradeID, B.DPK_ID, B.Remark  , Y.BBE02, T.BAP02, Q.BAX03, O.BDO03, G.BAG15  , K.ProduceDate, K.ExpiryDate,F.VAA05FROM DPD1 A join DPD2 B ON A.BCK01 = B.BCK01 and A.BillID = B.BillID  join VAA1 F ON F.VAA01 = B.VAA01 JOIN BBY1 Y ON Y.BBY01 = B.BBY01Left join BAX1 Q ON Q.BAX01 = Y.BAX01join BAG1 G ON G.BBY01 = B.BBY01left join BBX1 X ON X.BBX01 = G.BBX01left join BBT1 T ON T.BBX01 = X.BBX01left join BDO1 O ON O.BDO01 = X.BDO01JOIN DPK1 K ON K.ID = B.DPK_IDWHERE B.Quantity < 0 UNION ALLSELECT  B.BCK01, A.BillNO, A.DeptID  , CASE WHEN A.DeptID=0 THEN '零售' ELSE (SELECT BCK03 FROM BCK1 WHERE BCK1.BCK01 = A.DeptID) END 部门名称  , B.VAA01, B.VAJ01, B.BBY01, Y.BBY04, Y.BBY05, Y.BBY06, B.Unit, B.PackSize, B.BatchNo  , 0, 0, 0, 0, 0  , 0, 0  , -B.Quantity, B.PurchasePrice, -B.PurchaseAmount, K.PresellPrice, -K.PresellPrice * B.Quantity  , B.VAJ33 AS VAJ33B, B.VAJ38 AS VAJ38B  , A.AuditingDate, A.Assessor  , A.Accepter, A.Dispenser, A.Sender, A.Ratifier, A.TradeID, B.DPK_ID, B.Remark  , Y.BBE02, T.BAP02, Q.BAX03, O.BDO03, G.BAG15  , K.ProduceDate, K.ExpiryDate,F.VAA05FROM DPD1_2 A join DPD2_2 B ON A.BCK01 = B.BCK01 and A.BillID = B.BillID  join VAA1 F ON F.VAA01 = B.VAA01 JOIN BBY1 Y ON Y.BBY01 = B.BBY01Left join BAX1 Q ON Q.BAX01 = Y.BAX01join BAG1 G ON G.BBY01 = B.BBY01left join BBX1 X ON X.BBX01 = G.BBX01left join BBT1 T ON T.BBX01 = X.BBX01left join BDO1 O ON O.BDO01 = X.BDO01JOIN DPK1 K ON K.ID = B.DPK_IDWHERE B.Quantity < 0/*****************************编译显示:命令已成功完成! 

读书人网 >SQL Server

热点推荐