【问题标题】:Replacing Id with Actual values in SQL Server在 SQL Server 中用实际值替换 Id
【发布时间】:2014-11-20 11:54:20
【问题描述】:

我有以下表结构,我也提到了我的预期输出,请帮助我查询,因为我对 SQL 查询不太了解

查询:

SELECT * FROM(
SELECT ESIDispensary,ESILocation,test,Category, COUNT(*) AS [Total Count]
FROM
    (SELECT category,ESILOCATION,ESIDISPENSARY,TEST 
    FROM(SELECT id,CompanyId,FName,Code,category,ESILOCATION,ESIDISPENSARY
         FROM dbo.[EmployeeDetail] e  WHERE e.CompanyId = 1 AND Category in (1,2)) a 
    LEFT JOIN 
    (SELECT * 
     from 
        (SELECT EmployeeId, CustomeFieldName,FieldValue 
         FROM dbo.[CustomeFieldDetail] C  
         JOIN dbo.[EmployeeDetail]  e ON e.id = c.employeeid AND e.CompanyId = c.companyid  
         WHERE e.CompanyId = 1 AND Category IN (1,2)) SRC 
PIVOT 
(MAX(FieldValue) FOR CustomeFieldName IN([TEST])) 
piv)  
b ON a.Id = b.EmployeeId 
) AS a
GROUP BY  ESIDispensary ,ESILocation,test,Category) x

使用上述查询生成的表

ESIDispensary   ESILocation test    Category    Count
12                11        NULL       1        NULL
12                13        30         1        1
14                13        29         2        2 

表 1:ESI

Id  CompanyId   FieldName        ComboValue 
11      1       ESILOCATION        mumbai   
12      1       ESIDISPENSARY      mumbai   
13      1       ESILOCATION        pune     
14      1       ESIDISPENSARY      pune     
29      1       TEST               HDFC     
30      1       TEST               ICICI    

表 2:类别

id   CategoryName
1     staff
2     manager

问题是我想用尊重的值替换 ID,我也可以更改上面的查询以获得预期的结果

预期的总结输出:

ESIDispensary   ESILocation test      staff     manager
mumbai           mumbai     NULL       1        NULL
mumbai           pune       ICICI      1        1
pune             pune       HDFC      NULL      2 

【问题讨论】:

  • 生成结果中的类别与预期结果中的人员不匹配。预期结果中的人员的逻辑?
  • @Veera 员工和经理是柜台领域,他们是完美的,即在员工中,有一名员工像孟买一样拥有 esilocation 和 esidispensary

标签: c# sql sql-server sql-server-2008


【解决方案1】:

这是你想要的吗:

SELECT (SELECT ComboValue FROM ESI WHERE ID = ESIDispensary) AS  ESIDispensary,
            SELECT ComboValue FROM ESI WHERE ID = ESILocation) AS  ESILocation,
            SELECT ComboValue FROM ESI WHERE ID = test) AS  test,
            Category, [Total Count]
    FROM
    (
        SELECT ESIDispensary,ESILocation,test,Category, COUNT(*) AS [Total Count]
        FROM
            (SELECT category,ESILOCATION,ESIDISPENSARY,TEST 
            FROM(SELECT id,CompanyId,FName,Code,category,ESILOCATION,ESIDISPENSARY
                 FROM dbo.[EmployeeDetail] e  WHERE e.CompanyId = 1 AND Category in (1,2)) a 
            LEFT JOIN 
            (SELECT * 
             from 
                (SELECT EmployeeId, CustomeFieldName,FieldValue 
                 FROM dbo.[CustomeFieldDetail] C  
                 JOIN dbo.[EmployeeDetail]  e ON e.id = c.employeeid AND e.CompanyId = c.companyid  
                 WHERE e.CompanyId = 1 AND Category IN (1,2)) SRC 
        PIVOT 
        (MAX(FieldValue) FOR CustomeFieldName IN([TEST])) 
        piv)  
        b ON a.Id = b.EmployeeId 
    ) AS a
    GROUP BY  ESIDispensary, ESILocation, test, Category) x

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多