nvarchar分组

时间:2012-11-02 20:36:00

标签: sql-server-2008 tsql group-by nvarchar

首先,对不起我的英语,我会尽力以最好的方式解释。

有没有办法按SQL Server 2008中的nvarchar类型列进行分组?

我要更好地解释一下:(至少我试试)

如果我有这样的表:

ID  Quantity   City   Code   WebSiteLink
__  ________   ____   ____   __________
1      10      Milan   R2    home/images/1.jpg
2      20      Milan   R2    home/images/2.jpg
3      30      Rome    R2    home/images/3.jpg
4      55      Rome    R2    home/images/4.jpg
5      4       Naple   R2    home/images/5.jpg
6      1       London  R2    home/images/6.jpg
7      30      London  R2    home/images/7.jpg
8      40      London  R2    home/images/8.jpg

我能够对除WebSitelink之外的所有列进行分组,因为它是nvarchar类型。

我需要获得一个随机的img链接,是否可以通过查询来实现?

我不想使用存储过程。

2 个答案:

答案 0 :(得分:2)

要获得随机链接,您可以使用以下内容:

SELECT TOP (1) WebSiteLink
FROM YourTable
ORDER BY NEWID();

如果您对随机img链接有更多特定需求,可以添加WHERE子句。

答案 1 :(得分:1)

  

我需要获得一个随机的img链接:

例如,如果您需要每个代码的随机图像,例如GROUP BY code,您可以使用此查询:

  SELECT Code, (SELECT TOP(1) A.WebSiteLink
                  FROM tbl A
                 WHERE A.Code = B.Code
              ORDER BY NEWID()) RandomWebSiteLink
    FROM tbl B
GROUP BY Code

或窗口功能。这里是“group by”City,Code并显示一个随机的WebSiteLink

  SELECT City, Code, WebSiteLink
    FROM
       (
  SELECT City, Code, WebSiteLink,
         Row_Number() OVER (Partition by City, Code
                            Order by NewID()) RowNum
    FROM tbl
       ) X
   WHERE RowNum = 1;