如何使以下 T-SQL 语句合法?我可以复制为每个 CASE 选项设置 @Type 变量的子查询,但我宁愿只执行一次子查询。可能吗?
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 子句中,我需要引用主查询的 join stmt 中使用的表中的列。如果我将它们分开,那么 @Type 将失去相关性。