2011-01-31 121 views
1

我正在使用以下SQL语句将TableA中的数据复制到TableB。将数据从一个表复制到另一个表并设置固定值?

INSERT INTO TableB (url, pageViews) 
SELECT DISTINCT TOP(5) url AS url, SUM(HitCount) As pageViews 
FROM TableA 
WHERE (url LIKE '%www%site') AND (YEAR(dtDate) = 2011) AND (MONTH(dtDate) = 1) 
GROUP BY url 
ORDER BY pageViews DESC 

目前,这一工作在把网址和浏览量数据表B到下面大(请忽略的点 - 这是用于格式化样样在行看起来像一个表)。


|URL   | pageViews  | ranking 

|www.site.com | 25220   | NULL 

|www.site.com/a | 25230   | NULL 

|www.site.com/b | 25433   | NULL 

但排名列是NULL。对于每一行,我从表A把划过,我想设置的排名列的值(仅在表B存在)是“TOP5”,如下:


|URL   | pageViews  | ranking 

|www.site.com | 25220   | Top5 

|www.site.com/a | 25230   | Top5 

|www.site.com/b | 25433   | Top5 

我非常感谢这方面的帮助。

非常感谢:)

+1

请用您正在使用的RDBMS标记您的问题,因为这不是标准的SQL。 – 2011-01-31 13:08:23

回答

3

简单作为每一行选择恒定值:

INSERT INTO TableB (url, pageViews, ranking) 
SELECT DISTINCT TOP(5) url AS url, SUM(HitCount) As pageViews, 'Top5' AS ranking 
+0

非常感谢马蒂为您的快速反应!它的作品很棒:) – user540298 2011-01-31 14:11:14

1

但排名列是NULL。对于 我从 表A将在每个行,我想设置的 值排名列(仅在表B存在 )

你是不是从选择ranking列表B:

INSERT INTO TableB (url, pageViews, ranking) 
SELECT DISTINCT TOP(5) url AS url, SUM(HitCount) As pageViews, ranking 
FROM TableA 
WHERE (url LIKE '%www%site') AND (YEAR(dtDate) = 2011) AND (MONTH(dtDate) = 1) 
GROUP BY url 
ORDER BY pageViews DESC 
相关问题