2010-03-18 60 views
1

我是Qlikview的新手,正在尋找有關腳本的一些答案。我如何創建剛剛加入特定列的Qlikview連接(而不是所有具有匹配名稱的連接)?比方說,我有如下表:Qlikview加入不會加入所有匹配的列名稱

員工

Id  | Person | DepartmentID | Flags 
1000 , Bob  ,  2001   ,  1000000 
1001 , Sue  ,  2002   ,  1100000 

Id | Name | Flags 
2001 , HR  , 01101111 
2001 , R&D  , 1100000 

關於什麼是DepartmentID的<連接這些表的最佳途徑 - > ID字段?數據由SQL選擇提供。我想用獨特的名字編寫SQL視圖是一個想法,但必須有一個更簡單的方法。請指教。

回答

5

卡爾

首先,你真的會好起來使用QlikCommunity針對這些問題,該論壇由QlikView的用戶羣體很好的支持,你會更快地得到答案,我發現的唯一原因,這是我在QlikView上有谷歌提醒。

你的問題:

的QlikView會自動創建在所有匹配字段聯接並沒有辦法阻止它這樣做,也沒有辦法讓它加入使用不同的名稱領域。因此,答案是在SQL Select語句或LOAD語句中重命名您的字段,例如:

僱員: LOAD ID AS EmpID,Person,DepID,Flags AS Emp_Flags; SQL SELECT ID,Person,DepartmentID as DepID,標誌FROM .........; LOAD ID AS DepID,名稱AS DepartmentName,標誌AS Dep_Flags;名稱AS DepartmentName,標誌AS Dep_Flags;名稱AS DepartmentName,標誌AS Dep_Flags; SQL SELECT ID,名稱,標誌FROM .........;

這應該對你有用。

還有一條建議,儘管QlikView會加入多個字段,但最好避免這種情況,所以如果您確實有一個需要多個字段的聯接,那麼您應該通過添加字段來專門爲QlikView表創建一個鍵在這兩個表中創建一個單獨的字段。

正如我上面所說,加入QlikCommunity(www.qlikcommunity.com),你會發現一個更好的服務爲您的問題。

1

有一種方法可以防止QlikView自動加入具有相似名稱的字段。假設您的兩個表Tab1和Tab2具有相似的字段名稱,但是在它們自己的上下文中有所不同,則可以使用「noconcatenate」關鍵字來防止QlikView自動進行關聯。

0

您可以編輯的QlikView(CTRL + E)負載腳本,並使用這樣的事情:

Work: 
LOAD 
    EmployeeId, 
    EmployeePerson, 
    DepatmentId, 
    EmployeeFlags, 
    DepartmentName, 
    DepartmentFlags 

SELECT Employee.Id as EmployeeId, Employee.Person as EmployeePerson, Employee.DepartmentID as DepatmentId, Employee.Flags as EmployeeFlags, Department.Name as DepartmentName, Department.Flags as DepartmentFlags 
FROM Employee, Department 
WHERE Employee.DepartmentID = Department.Id 

(沒有嘗試,但你應該明白我的意思)

0

這應該工作

employee: 
LOAD * INLINE [ 
    ID, Person, DepartmentID, Flags 
    1000, Bob, 2001, 1000000 
    1001, Sue, 2002, 1100000 
]; 

department: 
LOAD * INLINE [ 
    ID, Name, Flags 
    2001, HR, 01101111 
    2002, R&D, 1100000 
]; 

left join (employee) 
LOAD ID AS DepartmentID, 
    Name, 
    Flags AS Department_Flags 
Resident department 
; 

DROP Table department; 

結果768,16這個樣子: result

親切的問候 丹尼爾