2014-12-11 5 views
0

SQL Server 데이터베이스에서 C# 응용 프로그램에서 사용하려고하는 뷰가 있는데 뷰에없는 키 필드가 모델에 필요합니다. 이것을 지나치게하려면 뷰를 생성 할 때 GUID를 만들려고했으나 각 행이 다르기 때문에 create 뷰에서 SELECT DISTINCT 절을 무시합니다.SQL Server GUID가있는보기 만들기 및 고유 한 절 선택

결과 중 하나만 GUID를 줄 수 있도록 SELECT 쿼리 다음에 GUID를 만들면 어떻게 될까요?

감사

UPDATE

모든 도움에 대한 감사 의견은 지금까지 내가 해결 방법을 관리하지만하지 예쁘고 더 나은 SQL과 점점 중이 야하기 때문에 나는 확신했습니다 나는 하나의보기

CREATE VIEW [dbo].[vw_OpenTradesMarket] 
AS 

SELECT DISTINCT TOP (1000) 

cast(C.[Link Ref#] AS varchar(max)) as [LinkRef] 
,cast(C.[OpenMktBASE] AS varchar(max)) as [Value] 
FROM Client AS C 

inner JOIN stgMKTBOTH AS M ON C.[Link Ref#] = M.[Link Ref#] 

이 더 나은 솔루션이 그 다음 나는 row_numberer으로이 테이블의 뷰를 만들 수있다() 번호가 테이블을 만들 수

CREATE VIEW vw_OpenTradesTest2 
AS 
SELECT 
* 
, Row_number() over (Order by LinkRef) as [Id] 
From dbo.vw_OpenTradesMarket 

내가 말했듯이, 작동하지만 꽤 좋지는 않습니다.이 문제를 개선 할 수 있습니까?

다시 한번 감사드립니다!

+1

아마도 guid 대신 row_number를 사용할 수 있습니까? 그렇게 적은 양의 데이터를 반환합니다. 이를 뷰에 넣고 RowNum = 1을 선택할 수 있습니다. –

+0

동일한 행에 대해 매번 동일한 키를 생성해야합니까? – Kritner

+0

그래서 내가 SELECT DISTINCT Firstname을 가지고 있다면, 성씨 FROM Table은 NEWID(), Firstname, 성 (FROM Table에서 DISTINCT Firstname으로 선택)으로 변경됩니다. – stephenjgray

답변

0

당신이 이것을 할 수있는 한 가지 방법이 있습니다. 당신의 테이블이 어떤 것인지 모르겠다. 그래서 나는 더미 테이블을 만들었다.

create table Something 
(
    SomeVal varchar(10) 
) 
insert Something 
select 'asdf' union all 
select 'asdf' union all 
select 'qwer' union all 
select 'qwer' 

go 

create view MyView as 
    select SomeVal, ROW_NUMBER() over (order by SomeVal) as RowNum 
    from Something 
    group by SomeVal 

go 

select * 
from MyView 

go 

drop view MyView 
drop table Something