我需要一個問題的幫助,什麼是在SQL SERVER中這樣做的最乾淨的方法。SQL Server何時和子查詢
我基本上是編寫一個查詢,檢查客戶號碼是否在另一個子查詢內,然後它應該返回該客戶號碼的servicename。這是我的嘗試,它不起作用。
你們有什麼建議嗎?
CASE WHEN aa.cust_no in (SELECT Cust_no FROM #Tabl1) THEN (SELECT ServiceName FROM #Tabl1) END AS Target
我需要一個問題的幫助,什麼是在SQL SERVER中這樣做的最乾淨的方法。SQL Server何時和子查詢
我基本上是編寫一個查詢,檢查客戶號碼是否在另一個子查詢內,然後它應該返回該客戶號碼的servicename。這是我的嘗試,它不起作用。
你們有什麼建議嗎?
CASE WHEN aa.cust_no in (SELECT Cust_no FROM #Tabl1) THEN (SELECT ServiceName FROM #Tabl1) END AS Target
我得到你想要做的,但你的語法需要改變。你可以試試LEFT JOIN
。
該查詢會給你的你的說法應該是什麼樣子
Select tabl1.ServiceName Target
From SomeTable aa
Left Join #Tabl1 tabl1
On aa.cust_no = tabl1.Cust_no
如果你想放別的東西,如果比賽不在#Tabl1
找到,那麼你就需要使用WHEN
的想法,或COALESCE
。
When tabl1.ServiceName Is NOT NULL Then tabl1.ServiceName Else 'Unknown Target' End
OR
Coalesce (tabl1.ServiceName, 'Unknown Target') Target
,而不是case
表達嘗試以這種方式選擇ServiceName
:
SELECT
(SELECT TOP 1 ServiceName FROM #Tabl1 where Cust_no = aa.cust_no) AS Target
FROM ...
我覺得茜缺少一個參數看
CASE Expression
WHEN Value1 THEN Result1
WHEN Value2 THEN Result2
ELSE Alternative
END
我希望這可以幫助...
CASE aa.cust_no
WHEN (SELECT Cust_no FROM #Tabl1 WHERE #Tabl1.cust_no) THEN (SELECT ServiceName FROM #Tabl1 WHERE #Tabl1.cust_no)
ELSE 'NO ServiceName'
END AS Target
我相信這應該讓你在找什麼。
SELECT serviceName
FROM table_A
WHERE cust_no IN (
SELECT cust_no
FROM table_B
);
你的嘗試是一個以'when'開始的語句,這在SQL中是不允許的。請編輯您的問題並顯示查詢。另外,用您正在使用的數據庫標記問題。 –
但我明白,這是我需要幫助的唯一部分,並且不起作用。我無法顯示所有代碼,因爲它超過了300行代碼。 –
使用CASE WHEN ... THEN from A LEFT JOIN B – Mihai