2014-03-04 20 views
0

我有一个表并希望使用COLORID为具有相同ID的记录填充ImageType_page。如何根据颜色ID确定图像类型

条件:

  • 如果任何页#具有相同ID的具有COLORID = 1,SET ImageType_page =对所有页#同一ID
  • 如果内TIFF任何页#与同样的ID有COLORID = 2,SET ImageType_page = TIFF,JPEG对于同一ID

这里内的所有页#是我的表:

Page#  | ID | PageColor  | COLORID | ImageType_page 
AT000001 | 1 | Black & White |  1  | 
AT000002 | 1 | Color   |  2  | 
AT000003 | 2 | Color   |  2  | 
AT000004 | 2 | Black & White |  1  | 
AT000005 | 3 | Black & White |  1  | 
AT000006 | 3 | Black & White |  1  | 

结果应该是:

Page# | ID | PageColor  | COLORID | ImageType_page 

AT000001 | 1 | Black & White |  1  | TIFF-JPEG 
AT000002 | 1 | Color   |  2  | TIFF-JPEG 
AT000003 | 2 | Color   |  2  | TIFF-JPEG 
AT000004 | 2 | Black & White |  1  | TIFF-JPEG 
AT000005 | 3 | Black & White |  1  | TIFF 
AT000006 | 3 | Black & White |  1  | TIFF 

下面是一些代码,我写了不起作用。任何帮助将不胜感激。

update dbo.tblPage 
set [IMAGE TYPE_page] = 'TIFF-JPEG' 
Where [COLORID] = 2 

update td 
set [IMAGE TYPE_page] = (select [IMAGE TYPE_page] FROM tblPAGE td2 where td2.id = td.ID) 
from tblPAGE td 
where (COLORID = 1) 
+3

Sql Server或Mysql,你到目前为止尝试过什么? –

+0

请向我们展示您尝试的查询,并解释您遇到的问题。 –

+0

['如何问一个关于Stackoverflow的问题](http://stackoverflow.com/help/how-to-ask) –

回答

0

一种方法是让所有有ColorID = 2的ID,并加入到在更新:

with cte as 
(
    select distinct id from tblPage where colorid = 2 
) 
update tbl 
set imagetype = CASE WHEN cte.id IS NOT NULL THEN 'TIFF-JPEG' ELSE 'TIFF' END 
from tblPage tbl 
left join cte on cte.id = tbl.id 

另外,您可以按ID,并查找最大ColorID:

with cte as 
(
    select id, max(colorid) as maxcolorid 
    from tblPage 
    group by id 
) 
update tbl 
set imagetype = CASE cte.maxcolorid WHEN 2 THEN 'TIFF-JPEG' ELSE 'TIFF' END 
from tblPage tbl 
inner join cte on cte.id = tbl.id 
+0

谢谢!有效。 – user3380735

相关问题