如何使以下T-SQL語句合法?我可以複製爲每個CASE選項設置@Type變量的子查詢,但我寧願只執行一次子查詢。可能嗎?在設置它的相同SELECT語句中使用SQL變量進行比較
SELECT
@Type = (SELECT CustomerType FROM dbo.Customers WHERE CustomerId = (SELECT CustomerId FROM dbo.CustomerCategories WHERE CatId= @CatId)),
CASE
WHEN @Type = 'Consumer'THEN dbo.Products.FriendlyName
WHEN @Type = 'Company' THEN dbo.Products.BusinessName
WHEN @Type IS NULL THEN dbo.Products.FriendlyName
WHEN @Type = '' THEN dbo.Products.FriendlyName
END Product,
...
FROM
Products
INNER JOIN
Category
...
編輯:修改我的例子更具體的......現在得跑......會回來的明天...簽署過短的遺憾,但不得不拿起孩子:d將檢查明天回來。謝謝!!
澄清:我不能分開這兩個:在子查詢的where-clasue中,我需要引用表中的主要查詢的join stmt中使用的列。如果我將它們分開,那麼@Type將失去相關性。
你需要更具體的一部分。 – 2012-04-24 19:53:20
你仍然太模糊。請告訴我們你需要做什麼,而不是告訴我們你認爲你需要做什麼。我認爲這裏有一個關於查詢和變量如何工作的根本缺失的鏈接,但是如果您向我們展示示例數據和期望的結果,那麼我們是非常聰明的人,並且可能想出如何實現您所追求的內容。 – 2012-04-24 20:03:22
如果您指定您正在使用的SQL Server的版本,這也很有用! – 2012-04-24 20:07:39