2014-01-13 61 views
0

我的任務是更新存儲過程,並試圖找出執行選擇的最有效方式。下面是當前的代碼,vaultIDclientID輸入參數:T-SQL使用變量查詢表格

SELECT 
    @siteID = Site.siteID, 
    @siteGroupID = Site.siteGroupID, 
    @customerID = Customer.customerID 
FROM 
    Customer 
INNER JOIN 
    Site ON Customer.siteID = Site.siteID 
WHERE 
    Site.phoneNumberIVR = @vaultID 
    AND Site.production = 1 
    AND Customer.clientID = @clientID 

我正在更新已與@clientID變量做。如果記錄具有特定的@siteGroupID,則需要在收到clientID時傳入該記錄。如果記錄具有不同類型的@siteGroupID,則@clientID變量需要附加特定的前綴。該前綴也將被存儲在站點表中。

我意識到我可以打電話到網站表格最初獲取前綴,然後修改@clientID變量,但我試圖找出是否有辦法只用一個電話就可以做到這一點。我一直在嘗試不同的案例陳述,但我不確定這是否可行。

回答

1

如果我正確理解您的問題,那麼你應該能夠扔在你的SELECT一個CASE與你的病情做追加:

SELECT 
    @siteID = Site.siteID, 
    @siteGroupID = Site.siteGroupID, 
    @customerID = Customer.customerID, 
    @clientID = 
     CASE 
      WHEN Site.siteGroupID = 1234 THEN Site.Prefix + @clientID 
      ELSE @clientID 
     END 
FROM 
    Customer 
    inner join Site on Customer.siteID = Site.siteID 
WHERE 
    Site.phoneNumberIVR = @vaultID 
    and Site.production = 1 
    and Customer.clientID = @clientID 

當然,這取決於@clientIDSite.Prefix的數據類型,你可能不得不做一些簡單的+以外的事情來進行追加。例如,如果兩人都integer數據類型,可以追加然後用一些CONVERT電話:

@clientID = CONVERT(integer, CONVERT(varchar, Site.Prefix) + CONVERT(varchar, @clientID)) 
+0

謝謝!!!!實際上我相當接近,但在那裏有一個等號,正在炸燬它。感謝您及時的回覆 – TrevorGoodchild