【发布时间】:2012-12-11 08:55:00
【问题描述】:
我正在尝试实现这个查询,但我不知道为什么我没有得到结果。
这里是描述:
假设我有一个餐桌电话:TableAct
Acct# Date WithdrawAmt DepositAmt
!24455 2012-11-19-00.00.00 1245.77 200.50
125577 2011-02-12-00.00.00 100.98 578.00
另一张桌子TableCustomerOrd:
ID# COrder# CustID Ord_Description VendorType
124455 7712AS 123 1AAA Permanent
125577 9914DL 346 1BBB Partial
... UK1234 111 2HJ5 Permanent'
,,, FR0912 567 5LGY Partial
然后TableCustomerDtls:
CustID Descriptions Delivery Address ZipCode
123 1AAA_BLUESHARE SUCCESSFUL 222 Main St 97002
346 1BBB_CHASE DECLINE 40 West Side 97122
111 2HJ5_CITIBANK SUCCESSFUL ……. …….
567 5LGY_VANGURD DECLINED ---- -----
还有表DelivaryFlight:
FlightOrder# FlightCustID FlightDt
7712AS 123 2011-9-29-00.00.00
9914DL 346 2010-11-2-00.00.00
UK1234 111 2012-4-1-00.00.00
FR0912 567 2012-9-11-00.00.00
我想在以下情况下更新TableAct:
-
TableAct. Acct# = TableCustomerOrd.ID#,AND: -
TableCustomerOrd. CustID = TableCustomerDtls.CustID同时,TableCustomerOrd.Ord_Descriptions字段应与TableCustomerDtls. Descriptions字段匹配“_”之前的任何内容。因此‘1AAA’, ‘2HJ5’等AND: -
DelivaryFlight.FlightOrder# = TableCustomerOrd.COrder#,AND:DelivaryFlight.FlightCustID = TableCustomerOrd. CustID。还有TableCustomerDtls. Delivery = ‘SUCCESSFUL’AND:DelivaryFlight.FlightOrder# = TableCustomerOrd. COrder# AND DelivaryFlight.FlightCustID = TableCustomerOrd. CustID Also TableCustomerDtls. Delivery = ‘DECLINED
那我要比较一下:elivaryFlight.FlightDt > DelivaryFlight.FlightDt。
基本上我需要将表DelivaryFlight 列FlightOrder#, FlightCustID 与TableCustomerOrd 匹配。
此外TableCustomerDtls 列Delivery 到ck 用于delivary 状态,例如‘DECLINED’。
和‘SUCCESSFUL’ 条件并比较‘SUCCESSFUL’ FlightDt 和‘DECLINED’ FlightDt。
这是我的查询,但请帮助我理解,我相信这可以以更好的方式完成。
查询不工作:
Update
Set …
FROM TableAct AC
Join TableCustomerOrd CustOd
ON AC.Acct# = CustOd.ID#
Join TableCustomerDtls CDtls
ON CDtls. CustID = CustOd. CustID
AND (CustOd.Ord_Descriptions =
Left(CDtls.Descriptions, LEN(rtrim(CDtls.Descriptions))))
JOIN DelivaryFlight DF
ON DF.FlightOrder# = CustOd.COrder#
AND DF.FlightCustID = CustOd.CustID
AND CDtls.Delivery = ‘SUCCESSFUL’
JOIN DelivaryFlight DF2
ON DF2.FlightOrder# = DF.COrder#
AND DF2.FlightCustID = DF.CustID
AND CDtls.Delivery = ‘DECLINED’
WHERE DelivaryFlight. FlightDt > DelivaryFlight. FlightDt
AND DepositAmt > 100
你的帮助将是巨大的,因为我的项目将于本周末结束。
谢谢
【问题讨论】:
-
我真的不明白这个:
WHERE DelivaryFlight. FlightDt > DelivaryFlight. FlightDt -
不要在字段名中使用#,最好避免在字段名中使用符号。在 # 的情况下,如果您碰巧将它用作第一个字符,SQl 服务器会认为您有一个临时表而不是字段名。并请正确拼写交货。这种事情会让维护程序员发疯,所以最好从一开始就养成更好的习惯。
-
Beth 谢谢,是的,那些是错字
标签: sql sql-server-2008 tsql