2012-08-03 60 views
0

我从存储在SQL Server数据库中调查的数据,我使用的画面进行分析。一个Tableaus怪癖是它需要的数据在一定的格式,这样的链接显示Modiying SQL Server数据格式

Tableau data style

他们利用工会的工作方法但是我的数据分布在100个问题其中一些有10个选项。这将创建一个几乎不可能编辑的巨大的SQL语句。

我的计划是与需要修改并与不需要然而,要修改只是第一个select语句的字段连接结果返回的其他数据则内部联接每一个问题进行联合。

这里是参考

select 
    [Survey].[SurveyId] AS [SurveyId], 
    [HumanCapital_Issues].[DisclosureResponsibility_Importance] AS [importance], 
    'Disclosure Responsibility' as [HCI_Importance] 
FROM [Survey].[Survey] [Survey] 
INNER JOIN [Survey].[HumanCapital_Issues] [HumanCapital_Issues] ON ([survey].[SurveyId] = [HumanCapital_Issues].[SurveyId]) 

union 

select 
    [Survey].[SurveyId] AS [SurveyId], 
    [HumanCapital_Issues].[DevelopingSkills_Importance] AS [importance], 
    'Developing skills' as [HCI_Importance] 
FROM [Survey].[Survey] [Survey] 
INNER JOIN [Survey].[HumanCapital_Issues] [HumanCapital_Issues] ON ([Survey].[SurveyId] = [HumanCapital_Issues].[SurveyId]) 


SELECT [Survey].[SurveyId] AS [Survey_SurveyId], 
    [Survey].[Year] AS [Year], 
    [Survey].[FinancialInstitutionCode] AS [FinancialInstitutionCode], 
    [Survey].[DeletionCode] AS [DeletionCode], 
    [Survey].[SalaryOnly] AS [SalaryOnly], 
    [FinancialInstitution].[FinancialInstitutionCode] AS [FinancialInstitution_FinancialInstitutionCode], 
    [FinancialInstitution].[Name] AS [Name], 
    [FinancialInstitution].[FDIC] AS [FDIC], 
    [FinancialInstitution].[Address_Street1] AS [Address_Street1], 
    [FinancialInstitution].[Address_Street2] AS [Address_Street2], 
    [FinancialInstitution].[Address_City] AS [Address_City], 
    [FinancialInstitution].[Address_State] AS [Address_State], 
    [FinancialInstitution].[Address_Zip] AS [Address_Zip], 
    [FinancialInstitution].[Address_County] AS [Address_County], 
    [FinancialInstitution].[ParentCompany] AS [ParentCompany], 
    [FinancialInstitution].[FDICBHC] AS [FDICBHC], 
    [FinancialInstitution].[OwnershipStructureCode] AS [OwnershipStructureCode], 
    [FinancialInstitution].[Employees_FullTimeEquivalent] AS [Employees_FullTimeEquivalent], 
    [FinancialInstitution].[Employees_FullTime] AS [Employees_FullTime], 
    [FinancialInstitution].[Employees_PartTime] AS [Employees_PartTime], 
    [FinancialInstitution].[Branches_FullService] AS [Branches_FullService], 
    [FinancialInstitution].[Branches_InStore] AS [Branches_InStore], 
    [FinancialInstitution].[Brances_LimitedService] AS [Brances_LimitedService], 
    [FinancialInstitution].[Headquarters_Population] AS [Headquarters_Population], 
    [FinancialInstitution].[LargestCity_Population] AS [LargestCity_Population], 
    [FinancialInstitution].[Assets] AS [Assets], 
    [FinancialInstitution].[Deposits] AS [Deposits], 
    [FinancialInstitution].[TARP_Participated] AS [TARP_Participated], 
    [FinancialInstitution].[TARP_CausedConcern] AS [TARP_CausedConcern], 
    [FinancialInstitution].[TARP_RequiredChanges] AS [TARP_RequiredChanges], 
    [FinancialInstitution].[RegionCode] AS [RegionCode], 
    [HumanCapital_Issues].[SurveyId] AS [HumanCapital_Issues_SurveyId], 
    [HumanCapital_Issues].[DisclosureResponsibility_Concern] AS [DisclosureResponsibility_Concern], 
    [HumanCapital_Issues].[DevelopingSkills_Concern] AS [DevelopingSkills_Concern], 
    [HumanCapital_Issues].[MotivatingPerformance_Concern] AS [MotivatingPerformance_Concern], 
    [HumanCapital_Issues].[Reorganizations_Concern] AS [Reorganizations_Concern], 
    [HumanCapital_Issues].[Hiring_Concern] AS [Hiring_Concern], 
    [HumanCapital_Issues].[Retention_Concern] AS [Retention_Concern], 
    [HumanCapital_Issues].[ContainingCosts_Concern] AS [ContainingCosts_Concern], 
    [HumanCapital_Issues].[ManagingRetirements_Concern] AS [ManagingRetirements_Concern], 
    [HumanCapital_Issues].[SalesCulture_Concern] AS [SalesCulture_Concern], 
    [HumanCapital_Issues].[DevelopingLeaders_Concern] AS [DevelopingLeaders_Concern], 
    [HumanCapital_Issues].[Other_Description] AS [Other_Description], 
    [HumanCapital_Issues].[Other_Concern] AS [Other_Concern] 
FROM 
    [Survey].[Survey] [Survey] 
INNER JOIN 
    [Profile].[FinancialInstitution] [FinancialInstitution] ON ([Survey].[SurveyId] = [FinancialInstitution].[FinancialInstitutionCode]) 
INNER JOIN 
    [Survey].[HumanCapital_Issues] [HumanCapital_Issues] ON ([Survey].[SurveyId] = [HumanCapital_Issues].[SurveyId]) 

联合声明中是否有一个“简单的方法”进行联合,然后用另一个SELECT语句加入?

+0

这是没有必要不断地命名列回到他们的旧名称: “'[HumanCapital_Issues] [Hiring_Concern] AS [Hiring_Concern]'。”它已被称为'Hiring_Concern'。 – Ariel 2012-08-03 21:36:50

+0

先做工会,然后做结果加入。 – 2012-08-03 22:04:51

+0

您将在连接中使用哪些列?什么会将一行不变的问题与未改变的问题连成一行? SurveyId? – 2012-08-03 22:11:24

回答

0

如果我终于明白了这个问题,你想加入一个查询获得的大部分数据和联合查询的越来越具体章节,以他们的地方。希望SurveyID是连接元素。使用现有的查询,派生表:

select * 
    from 
    (
    { union query here } 
) q1 
inner join 
    (
    { query with all the data here } 
) q2 
    on q1.SurveyID = q2.SurveyID