cos*_*ost 1 sql t-sql sql-server
我有一张桌子Request和桌子Search.该Request表有一个ID列,它是SearchRequestID中的外键.Search使用相同的RequestID 可以有多行.SearchStatus中还有另一列,可以是Complete或Incomplete.我想要的是一个为每个RequestID返回的查询:
RequestID- Count of Search rows with 'Complete'-Count of Search rows with 'Incomplete'
这可以通过SQL轻松完成吗?
试试:
SELECT RequestId,
SUM(CASE WHEN Status = 'Complete' THEN 1 ELSE 0 END),
SUM(CASE WHEN Status = 'Incomplete' THEN 1 ELSE 0 END)
FROM Search
GROUP BY RequestId
Run Code Online (Sandbox Code Playgroud)
如果您想列出每个RequestId,即使此请求没有搜索,您可以执行以下操作:
SELECT r.Id,
SUM(CASE WHEN s.Status = 'Complete' THEN 1 ELSE 0 END),
SUM(CASE WHEN s.Status = 'Incomplete' THEN 1 ELSE 0 END)
FROM Request r
LEFT JOIN Search s ON r.Id = s.RequestId
GROUP BY r.Id
Run Code Online (Sandbox Code Playgroud)
请参见SQLFiddle