2012-09-01 3 views
0

많은 문자열 값을 반환하는 쿼리가 있습니다. 각 고유 값에 색상을 지정해야하지만 고유 한 값의 수 또는 순서를 알 수있는 방법이 없습니다. 다음은 쿼리가 순간에 반환하는 것입니다 :SQL 데이터에 고유 한 색 지정/생성

| ID | Value | Colour | 
     1   XF452   ? 
     2   ALL1F5   ? 
     3   NULL   ? 
     1   XF452 
     2   BD4F 
     3   NULL 
     1   XF452 
     2   XF452 
     3   XF452 

가이처럼 보이는 끝낼 수 있도록 나는 각각 다른 값으로 색상을 지정하려는 :이 반 달성

| ID | Value | Colour | 
     1   XF452  #880010 
     2   ALL1F5  #FF0000 
     3   NULL   #8C8C8C 
     1   XF452  #880010 
     2   BD4F   #002871 
     3   NULL   #8C8C8C 
     1   XF452  #880010 
     2   XF452  #880010 
     3   XF452  #880010 

을 이미 값 열의 유니 코드 값을 얻고 시작 부분에 '#'을 추가했지만 색상 변동은 매우 작았습니다. 대부분 같은 색상의 다른 색조였습니다. 아무도 더 좋은 아이디어가 있습니까?

SELECT value, getMyColour() AS colour FROM table GROUP BY value; 

당신은 다음 원래 테이블이 하위 쿼리에 가입하실 수 있습니다 아웃 값을 얻을 :

답변

1

다음을 사용하여 (어떤 방법을 선택하든 사용) 각 값을 얻고 그것을 색을 지정하는 하위 쿼리를 사용할 수 있습니다 : 나는이 제안 무엇

SELECT table.id, table.value, subq.colour 
FROM table, 
    (SELECT value, getMyColour() AS colour FROM table GROUP BY value) subq 
WHERE table.value = subq.value 
0

는 임시 테이블에 테이블에서 서로 다른 값을 가져옵니다.

create table #temp(value varchar(10),color_code varchar(100)) 

insert into #temp 
select distinct value,getcolor from yourtable 

지금 당신은 그냥 NEWID을 사용하는 것입니다 당신이 할 수있는이

update u SET Color=t.color_code from yourtable u join #temp t 
on u.value=t.value 
0

한 가지 방법은 같은 테이블에 가입해야합니다(). 여기 INFORMATION_SCHEMA.COLUMNS의 테이블에 임의의 4 바이트 값들을 할당하는 예이다

select max(cast(NEWID() as BINARY(4))) over (partition by table_name), table_name 
from INFORMATION_SCHEMA.COLUMNS 

cast(NEWID() as BINARY(4)) 식은 임의 4 바이트 값을 생성한다. max() over (partition . . .)은 동일한 table_name (이 경우)이있는 모든 항목에 동일한 값을 할당합니다. 당신은 다음 식을 사용합니다 : 당신이 임의의 색상이 아닌 색상을 졸업 원한다면 나는 고려할 것입니다, 그런데

select max(cast(NEWID() as BINARY(4))) over (partition by value) 

뭔가 같은 :

select cast((dense_rank(value) over (partition by value))/(select count(distinct value)*1.0 from table)*power(2.0, 32) as binary(4)) 
0
SET [Color] = '#' + CONVERT(VARCHAR(max), CRYPT_GEN_RANDOM(3), 2) 
관련 문제