You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sql-tools/根据充值单更新门店.sql

72 lines
1.5 KiB

1 year ago
UPDATE A
SET A.FCompId = B.FCompId
FROM TMemberCard AS A,_xiu..TMemberCard AS B
WHERE A.FCardId = B.FCardId
AND A.FCompId != B.FCompId
SELECT * FROM TCompany
DROP TABLE #Company
CREATE TABLE #Company
(
FCompId BIGINT,
FCompNo VARCHAR(10)
)
INSERT #Company
SELECT FId,FNo FROM TCompany
WHERE FNo IN('002','008','009','010')
BEGIN TRAN
DECLARE @CardId BIGINT
DECLARE @CardNo VARCHAR(300)
DECLARE List CURSOR FOR
SELECT A.FCardId FROM TMemberSaleCard AS A,TMemberSaleBill AS B
WHERE A.FBillId = B.FBilliD
AND B.FState = 1
GROUP BY FCardId
OPEN List
FETCH List INTO @CardId
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @CompId BIGINT
DECLARE @CardCompId BIGINT
SELECT TOP 1 @CompId = T.FCompId ,@CardNo = B.FCardNo,@CardCompId = C.FCompId
FROM TMemberSaleCard AS B,TMemberSaleBill AS T,TMemberCard AS C
WHERE 1=1
AND T.FBillId = B.FBillId
AND B.FSalePrice > 0
AND B.FCardId = @CardId
AND C.FCardId = B.FCardId
AND T.FState = 1
AND ((T.FWorkDate >= '2018-11-01' AND T.FCompId = 3472330288284041216) OR ( T.FCompId != 3472330288284041216))
ORDER BY T.FBillTime DESC
PRINT @CardNo
SELECT @CompId = ISNULL(@CompId,0)
IF @CompId != @CardCompId AND (@CardCompId IN(SELECT FCompId FROM #Company) OR @CompId IN(SELECT FCompId FROM #Company))
UPDATE TMemberCard SET FCompId = @CompId WHERE FCardId = @CardId
FETCH List INTO @CardId
END
CLOSE List
DEALLOCATE LIST
COMMIT TRAN