【发布时间】:2014-03-06 07:51:20
【问题描述】:
如何在子选择中简单地对多行进行硬编码?
我知道我可以做到 (How to select several hardcoded SQL rows?):
SELECT x.id, SUM(ISNULL(OtherTable.count_column,0))
FROM (SELECT 12 AS id
UNION
SELECT 21 AS id
UNION
SELECT 101 AS id
/*AND so on */
) AS x
LEFT JOIN OtherTable ON x.id = OtherTable.id
Group BY x.id
有没有一种不那么笨拙和冗长的方法来做到这一点?
我真正想要的是:
SELECT id, SUM(ISNULL(count_column,0)) FROM OtherTable
WHERE id IN (12, 21, 101,/*And So On*/)
GROUP BY id
在这种情况下,它不包括不存在的 id 的总和 0。有没有办法包含未找到的 id?
我注意到 SQL Server 的 PIVOT,但我不确定这是否使它更简单/不那么冗长。
我想我只是问有没有更好的方法?
【问题讨论】:
标签: sql sql-server