嗨我有一张交易表,我需要返回整个表格,但我需要标题和价格不同,因为有很多翻倍,我已经在下面举了一个示例场景
Col ID || Col Title || Col Price || Col Source
a b c d
a b c b
b a a c
b a a 1
预期结果:
a b c d
b a a c
我不确定是否在这里使用distinct或group,任何建议都会受到赞赏
干杯
斯科特
=======================
看看你的一些建议,我将不得不重新考虑这个,谢谢你们
答案 0 :(得分:1)
这将为每个不同的(价格,标题)对任意选择一行
;WITH myCTE AS
(
SELECT
*,
ROWNUMBER() OVER (PARTITION BY Price, Title ORDER BY Source) AS rn
FROM
MyTable
)
SELECT
*
FROM
myCTE
WHERE
rn = 1
答案 1 :(得分:0)
您可以使用分组依据,但只返回标题和价格,必须忽略ID和来源
答案 2 :(得分:0)
您要求整个表格,但在您的示例输出中,您丢失了两个记录,从而失去了“Col Source”的值。
a b c b
b a a 1
Group By将帮助您编写非常简单的查询
select id, title, price, source from table group by title, price
答案 3 :(得分:0)
DISTINCT
和GROUP BY
通常会生成相同的查询计划,因此两个查询结构的性能应该相同。应使用GROUP BY
将聚合运算符应用于每个组。如果您只需删除重复项,请使用DISTINCT
。如果您正在使用子查询,那么该查询的执行计划会有所不同,因此在这种情况下您需要先检查执行计划,然后再决定哪个更快。
您应该将GROUP BY作为结果集中所需的整个列。但是,DISTINCT将仅返回特定列的唯一列表。
SELECT ID, Title, Price, Source
FROM table as t
GROUP BY Title, Price