这是从下面的查询与id
和Field1
输出通过Field4
存储于命名为YourTable表。
id Field1 Field2 Field3 Field4 NewField
-- -------- -------- -------- -------- --------------
1 positive negative negative positive Field1, Field4
2 negative positive positive negative Field2, Field3
3 negative negative negative positive Field4
4 positive negative negative negative Field1
SELECT
sub.id,
sub.Field1,
sub.Field2,
sub.Field3,
sub.Field4,
IIf
(
Right(sub.raw_string,2)=', ',
Left(sub.raw_string, Len(sub.raw_string) -2),
sub.raw_string
) AS NewField
FROM
(
SELECT
y.id,
y.Field1,
y.Field2,
y.Field3,
y.Field4,
(IIf(y.Field1='positive','Field1',Null) + ', ')
& (IIf(y.Field2='positive','Field2',Null) + ', ')
& (IIf(y.Field3='positive','Field3',Null) + ', ')
& IIf(y.Field4='positive','Field4',Null)
AS raw_string
FROM YourTable AS y
) AS sub;
感谢HansUp。这很快,效果很好。你救了我的一天。只是想知道,我有大约20个类似的领域,IIf命令是否会工作,因为我读到它对命令数量或执行时间有限制。或者我必须做一个替代方案。再次感谢 – abdullahgz
我认为嵌套的'IIf'表达式是有限制的,但是这个查询不会嵌套它们,所以这个限制不适用。它应该在延伸到20个领域时仍然有效,但我不知道它是否足够快。 – HansUp
谢谢,我现在明白了,我会试试看 – abdullahgz