1

完璧に機能するものを選択しました。

update ClientS set StatusID=4
where ClientID= (select P.ClientID
   ,LastName+' '+FirstName as Name 
   ,Address
   ,max(p.PickupDate)as 'Last Pickup'
   ,DATEDIFF(month,max(p.PickupDate),GETDATE())as'last pickup was months ago'
from Pickup P
join Clients C on P.ClientID= C.ClientID
where WIC=0 and C.StatusID = 1 or WIC=0 and C.StatusID = 2
group by p.clientid, lastname + ' ' + firstname,address
order by 4)

last pickup was months agoこの選択の1つに基づく更新ステートメントが必要です。StatusIDテーブル内のクライアントを更新Clientsし、2か月以上前に最後にピックアップしたこの選択のクライアントに対してのみ4に設定する必要があります。これまでのところ私はこれを持っています

create procedure pr_UpdateStatusHwoPickupMoreThanTwoM 
AS
update ClientS set StatusID=4
where ClientID= (select P.ClientID
   ,LastName+' '+FirstName as Name 
   ,Address
   ,max(p.PickupDate)as 'Last Pickup'
   ,DATEDIFF(month,max(p.PickupDate),GETDATE())as'last pickup was months ago'
from Pickup P
join Clients C on P.ClientID= C.ClientID
where WIC=0 and C.StatusID = 1 or WIC=0 and C.StatusID = 2
group by p.clientid, lastname + ' ' + firstname,address
order by 4)

私はそれが正しくないことを知っています、私はどういうわけか最後のピックアップが2ヶ月以上前であったことを指定する必要がありますが、それをどのように理解しStatusID、それらのためだけに変更することはできませんClientID。それを行う方法について何かアイデアはありますか?

4

2 に答える 2

1

このクエリを試してください

SQLSERVERの場合

update ClientS set StatusID=4
where ClientID= (select P.ClientID
from Pickup P
join Clients C on P.ClientID= C.ClientID
where WIC=0 and C.StatusID = 1 or WIC=0 and C.StatusID = 2
group by p.clientid 
having max(p.PickupDate) < DATEADD(month,-2,GETDATE()));

内部クエリは、目的の結果が得られない理由であるclientIdのみと比較している1行に対して複数の列を返しています。

于 2013-02-26T03:33:30.210 に答える
1

これを試して

update C
set StatusID=4
from (SELECT P.ClientID, MAX(p.PickupDate) MaxPickupDate
      FROM @Pickup P
      group by P.Clientid) P
     join @Clients C on P.ClientID= C.ClientID
where C.WIC=0 and C.StatusID in (1, 2)
      AND P.MaxPickupDate<DATEADD(month,-2,GETDATE())

また、ここで間違いがあります

where WIC=0 and C.StatusID = 1 or WIC=0 and C.StatusID = 2

この条件は、WIC = 0のすべての行に当てはまります。この方法で、修正できます。

WHERE WIC=0 AND C.StatusID in (1,2)
于 2013-02-26T03:37:55.320 に答える