我想在下表中执行此查询,但是我不能说需要使用hading和group by,有人可以向我展示如何使用SQL Server。
SELECT
products.name AS item,
users.name AS buyer,
auctionValues.value AS value
FROM
auctionValues
JOIN
products ON (auctionValues.productId = products.id)
JOIN
auctionOrders ON (auctionsValues.auctionOrderId = auctionOrders.id)
AND (auctionOrders.id = '987')
JOIN
users ON auctionValues.userId = users.id
WHERE
auctionValues.value >= MIN(auctionValues.value) * 1.05
ORDER BY
products.id ASC,
auctionValues.value DESC
答案 0 :(得分:0)
这可能有效:
;with minValues as (
select productId, MIN(auctionValues.value) * 1.05 as minValue
)
SELECT
products.name AS item,
users.name AS buyer,
auctionValues.value AS value
FROM
auctionValues
JOIN
products ON (auctionValues.productId = products.id)
JOIN
auctionOrders ON (auctionsValues.auctionOrderId = auctionOrders.id)
AND (auctionOrders.id = '987')
JOIN
users ON auctionValues.userId = users.id
WHERE
auctionValues.value >= (SELECT minValue from minValues WHERE products.Id = minValues.productId)
ORDER BY
products.id ASC,
auctionValues.value DESC
答案 1 :(得分:0)
通常,您group by
min
函数中不是的列。
看到以下链接。
https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql?view=sql-server-2017
答案 2 :(得分:0)
如果不将MIN
之类的聚合函数不包含在GROUP BY
中,则不能将它们混合在一起。但是,根据您的情况,您只需要使用SELECT
子查询来获取条件中使用的MIN
值。
更改此部分:
WHERE auctionValues.value >= (SELECT MIN(auctionValues.value) FROM auctionValues) * 1.05