[英]How do I select items from one table such that a query in another table yields exactly one row?
[英]How do I get distinct items from one table into another?
編輯 :因為我使用的是ExactTarget(Salesforce Marketing Cloud),所以我只能訪問SELECT語句。 沒有一個好的SQL可以使這變得容易。
我有一張客戶表和一張優惠券表。 我想為符合條件的客戶分配唯一的代碼,但查詢#1有點卡住了。 (查詢2是一個簡單的聯接。)
表格1
+-------------+-------------+------------+ | Customer | CouponType | CouponCode | +-------------+-------------+------------+ | Customer1 | 20pctoff | | | Customer2 | 20pctoff | | | Customer3 | 10pctoff | | | Customer4 | NULL | | +-------------+-------------+------------+
表2
+-------------+-------------+------------+ | CouponType | CouponCode | AssignedTo | +-------------+-------------+------------+ | 10pctoff | Coupon1 | | | 20pctoff | Coupon2 | | | 30pctoff | Coupon3 | | +-------------+-------------+------------+
查詢#1將導致以下結果:
客戶1 =優惠券2
Customer2 =無(不再提供20pctoff)
客戶3 =優惠券1
Customer4 =無(不符合條件)
更新表2的第二個SQL是一個簡單的聯接(我不需要幫助)。
解決了第三張桌子。 簡直令人難以置信,但這就是有時使用ExactTarget所要付出的代價。 警告,要求一次遍歷已知的CouponCodes 1。
新表:
+-----+------------------+--------------+ | ID | Customer | CouponCode | +-----+------------------+--------------+
目標表3,覆蓋
SELECT row_number()OVER(按客戶訂購)作為ID,表1中的客戶,其中CouponType ='20pctoff'
目標表3,更新
SELECT row_number()OVER(按CouponCode排序)作為ID,來自Table2的CouponCode,其中CouponType ='20pctoff'並且AssignedTo為NULL
目標表1,更新
SELECT t3.Customer,t3.CouponCode FROM table3 t3內部聯接table1 t1上的t1.Customer = t3.Customer,其中t3.Customer不為NULL且t3.CouponCode不為NULL
目標表2,更新
選擇t3.Customer作為AssignedTo,從table3選擇t3.CouponCode t3內部聯接table2在t2.couponCode = t3.CouponCode上選擇t2,其中t3.Customer不為null且t3.CouponCode不為null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.