所以,基本上,在我的查询中,我希望有一个状态列,它将包含基于特定条件的一个或多个状态。用户应该能够过滤/搜索该列中的那些状态消息。我不确定语法是否能够实现这一点。
这会在我的列中选择0到2个状态div,我按原样显示。
从理论上讲,我想要发生什么:
Select fields, (select CASE WHEN root_directory IS NULL THEN '<div class="gray status">Unbuilt</div>' ELSE '' END + ' ' + (select top(1) CASE WHEN isnull(payment_received,0) = 1 THEN '' ELSE '<div class="red status">Unpaid</div>' END
FROM invoice C
WHERE C.id = B.id) as statuses
FROM table
WHERE statuses LIKE '%Unbuilt%'
关于如何在我的状态列中使用的想法?
感谢。
答案 0 :(得分:0)
WHERE
子句不能引用选择列表中的列。从逻辑上讲,在选择任何内容之前应用WHERE
。
但是,您可以根据设置statuses
结果列的条件进行过滤。作为奖励,您将能够摆脱选择列表中的CASE
个表达式之一,因为WHERE
子句将解决以前适用的情况。
目前还不清楚原始表中的哪个表别名B
适用,但table
是唯一真正的候选者。假设B
引用表table
,那么沿着这些行的某些内容将会显示您想要的内容:
Select B.fields, '<div class="gray status">Unbuilt</div> '
+ CASE C.payment_received
WHEN 1 THEN ''
ELSE '<div class="red status">Unpaid</div>'
END
FROM
table B
JOIN invoice C ON C.id = B.id
WHERE root_directory IS NULL