【发布时间】:2020-11-28 06:09:36
【问题描述】:
我想在 SQL 查询中间设置一个变量。
我有多个“标志”,我希望查询在结果列中报告有关客户的所有真实标志。 因此,我不能使用 CASE 语句,因为一旦找到第一个“真”语句,它就会停止评估。 为了解决这个问题,我使用一组 if IF 语句将相关标志附加到变量,然后在 Result 列中报告该变量。但是,我对此无能为力。
下面的代码当然不会运行。如何重新组织此查询以使其符合犹太教规?
代码如下:
DECLARE
@CountOfOrders int = 0,
@resultstring varchar(max) = ''
SELECT
Customers.CustomerName,
CountOfOrders.CountOfOrders,
@resultstring as Result
From
--Get some basic data from the query's base table:
(Select 'James Bond' as CustomerName) Customers
--Get some extra data about James Bond's orders from a different table,
--Let's just say he's got 35 orders:
OUTER APPLY (
SELECT CAST(35 AS INT) as CountOfOrders
) CountOfOrders
--Now do some number crunching:
Set @CountOfOrders = CountOfOrders.CountOfOrders
IF @CountOfOrders > 10 set @resultstring = @resultstring + 'James Bond has greater than 10 orders. '
IF @CountOfOrders > 20 set @resultstring = @resultstring + 'James Bond has greater than 20 orders. '
IF @CountOfOrders > 30 set @resultstring = @resultstring + 'James Bond has greater than 30 orders. '
IF @CountOfOrders > 40 set @resultstring = @resultstring + 'James Bond has greater than 40 orders. '
IF @CountOfOrders > 50 set @resultstring = @resultstring + 'James Bond has greater than 50 orders. '
【问题讨论】:
标签: sql sql-server string tsql count