我想根据计数结果做一个案例陈述。
类似的东西:
SELECT
CASE
WHEN count(distinct column) = 1
THEN Foo
WHEN count(distinct column) = 2
THEN foo2
END,
column2
FROM
TABLE
以上引发错误,例如:
Column 'column2' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
我尝试了其他一些类似的变体,但无济于事。
使用MS SQL 2005。
答案 0 :(得分:1)
你必须GROUP BY column2:
SELECT
CASE
WHEN count(distinct column) = 1
THEN Foo
WHEN count(distinct column) = 2
THEN foo2
END,
column2
FROM
TABLE
GROUP BY Column2
答案 1 :(得分:0)
昨天解决了这个问题。通过使用不同的别名加入表格两次,并为每个别名使用不同的连接条件,我能够完成我所需要的。这让我可以避免需要进行计数,因为我有一些只有正确值的特殊用途表。
很抱歉抽象代码,但结果类似于:
SELECT
CASE
WHEN table1.field IS NOT NULL
THEN table1alias1.column1
WHEN table2.field IS NOT NULL
THEN table1alias2.column1
END,
column2
FROM
TABLE0
LEFT OUTER JOIN TABLE1 on TABLE0.id = TABLE1.field AND
TABLE1.column1 LIKE '%foo%' as TABLE1ALIAS1
LEFT OUTER JOIN TABL1 on TABLE0.id = TABLE1.field AND
TABLE1.column1 LIKE '%fork%' as TABLE1ALIAS2