如何通过在 SQL 服务器中对单个列执行不同操作来获得 table 的所有列?

How to have all the columns of a table by doing a disctint on a single one in with SQL Server?

我的 SQL 服务器数据库中有一个 table,由样式代码列和图像组成:

stylecode   images

CTWAI4-RC   https://dwk1ydkfsczz3.cloudfront.net/CTWAI4-3589-1jpg-90da2f9b-d942-49f5-85df-a5fae6a76934.jpg
CTWAI4-RC   https://dwk1ydkfsczz3.cloudfront.net/CTWAI4-3589-1jpg-90da2f9b-d942-4785-85df-a5fae6a76934.jpg
WSM6HW-RC   https://dwk1ydkfsczz3.cloudfront.net/WSM6HW-0090-1jpg-998a79f1-6ed9-4610-b30d-113745e37c59.jpg
WSM6HW-RC   https://dwk1ydkfsczz3.cloudfront.net/WSM6HW-0090-1jpg-998a7781-6ed9-4610-b30d-113745e37c59.jpg
WLY8OW-RC   https://dwk1ydkfsczz3.cloudfront.net//WLY8OW-0026-1jpg-b526d225-5ae5-44fc-b78b-d755a3d94ff6.jpg
WLY8OW-RC   https://dwk1ydkfsczz3.cloudfront.net/WLY8OW-1651-1jpg-0051b696-d786-4864-9466-75f90b96fa33.jpg

如您所见,我有好几次相同的样式,我想在我的 table 上查询只有相同的样式代码和相应图像的地址。

所以我做了一个:

select distinct stylecode from dbo.Y2_Images;

其中 returns 所有独特的样式代码,但我想在它旁边加上相应图像的值,

我做了一个

select * from dbo.Y2_Images group by stylecode;

但我的错误是:

Column 'dbo.Y2_Images.images' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

如何通过代码风格的唯一值排序,让两列的值相同?

理解您的问题的方法不止一种。

如果您想要不同的 style/images 元组,则:

select distinct stylecode, images from dbo.Y2_images

如果每种样式只需要一张图片,即使有多个不同的值,也可以使用聚合函数,例如 max()min():

select sylecode, max(images) as images from dbo.Y2_images group by sylecode

如果有多个不同的图像,但您希望所有不同的图像都在一个列中,请使用字符串聚合:

select stylecode, stringagg(distinct images, ',') as images from db.Y2_images group by stylecode