2013-06-25 38 views
1

我有一個名爲SVCode和LocationCode的字段的表。我希望能夠專注於列中列出的所有SVCode,並檢查它們的LocationCode是否不同。SQL查找多個值

實施例:

LocationCode:   

107654403  
107654403  
107653802 
107653802 
107656502 
126515001 
128030852 
126515001 

SVCode: 

STN10 
STN10 
STN10 
STN10 
STN10 
STN10 
GIN04  
GIN04 
GIN04 

每一行相匹配。 LocationCode 107654403與STN10等等。

我想基本上是創建一個新的列稱爲MultipleLocations如果一個SVCode有多個不同的位置代碼,然後設置MultipleLocation列= 1,否則0

上這樣做的任何幫助嗎?

+1

* *不同*表中的'LocationCode'和'SVCode'列?如果是這樣,你怎麼知道哪一個與哪個相符?另外,您是否可以提供一個示例,說明上面的示例數據的輸出結果? – mellamokb

+0

我修改了一個現有的數據庫來添加一個新的multiplelocations列。我有兩個表,一個名爲dbo.IndxServ,一個名爲dbo.Service。假設我需要在SVCode內部連接IndxServ和Service(它們都有)。 dbo.IndxServ在其中有Svcode,Description和MultipleLocation列,但它全部設置爲0,因爲我還沒有修改任何東西。 Dbo.Service也具有LocationCode和SVCode。 – user659745

+0

你能編輯你的問題來顯示你的表格結構,你的一些數據和預期的輸出嗎? –

回答

1

您可以使用這樣的事情來識別那些有多個位置:

SELECT SVCode 
FROM (SELECT DISTINCT LocationCode, SVCode 
     FROM Table 
    )sub 
GROUP BY SVCode 
HAVING COUNT(*) >1 
0

以某調戲你的列名,但

SELECT l.*, s.*, IF(COUNT(s.id) > 1,1,0) AS multipleLocation FROM LocationCode l 
INNER JOIN SVCode s ON s.locationCodeId = l.id 
GROUP BY l.id 
0
select distinct SVCode 
from Table1 t1 
where exist 
(select LocationCode from table1 where t1.SVCode = SVCode and 
LocationCode != t1.LocationCode); 

這會給你所有的列表SVcode與多個位置。

0

這應該工作。

UPDATE t1 
SET MultipleLocation = 1 
WHERE SVCode IN (
    SELECT DISTINCT SVCode FROM t1 
    WHERE COUNT(SVCode) > 1 
    GROUP BY SVCode 
) 

祝你好運。