显示所有列的SQL查询
我有下表和一个SQL查询来确定表中是否有任何项目的买入价高于卖出价 查询:显示所有列的SQL查询,sql,Sql,我有下表和一个SQL查询来确定表中是否有任何项目的买入价高于卖出价 查询: SELECT id, name FROM orders GROUP BY id, name HAVING MAX(CASE WHEN buy = 'false' THEN price END) > MIN(CASE WHEN buy = 'true' THEN price END) 问题是,这只返回两行: 我要查找的结果应该显示所有列中买入价高于卖出价的所有项目。阅读groupby我发现它只返回不同的值
SELECT id, name
FROM orders
GROUP BY id, name
HAVING MAX(CASE WHEN buy = 'false' THEN price END) > MIN(CASE WHEN buy = 'true' THEN price END)
问题是,这只返回两行:
我要查找的结果应该显示所有列中买入价高于卖出价的所有项目。阅读groupby
我发现它只返回不同的值。我是否必须使用连接来实现最终结果
|id |buy |date |price |name
--------------------------------------------------
3 false 2017-01-04 19:23:12.000 7 bread
3 false 2017-01-04 19:23:12.000 4 bread
2 false 2017-01-04 19:23:12.000 7 grapes
使用此查询,结果是下表中不应有以红色突出显示的行
SELECT *
FROM orders
WHERE id IN (SELECT id
FROM orders
GROUP BY id, name
HAVING MAX(CASE WHEN buy = 'false' THEN price END) > MIN(CASE WHEN buy = 'true' THEN price END))
将现有查询用作子查询:
SELECT * from orders where id in
(
SELECT id
FROM orders
GROUP BY id, name
HAVING MAX(CASE WHEN buy = 'false' THEN price END) > MIN(CASE WHEN buy = 'true' THEN price END)
)
我已尝试将其他列添加到查询中。我更新了postHi Fauxmosapien的回答,在您的查询中添加了where子句,结果是正确的。非常感谢您的帮助。