首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CrossTab Server查询

CrossTab Server查询
EN

Stack Overflow用户
提问于 2016-11-05 06:23:32
回答 1查看 51关注 0票数 0

我的选择查询:

代码语言:javascript
复制
SELECT      
    COUNT(*) * 500 AS TotalFee, 
    ISNULL(Employee.EFName, '') + ' ' + ISNULL(Employee.EMName, '') + ' ' + ISNULL(Employee.ELName, '') as Name,
    CAST(MONTH(sdatetime) AS int) as Months
FROM            
    Patient_Services 
INNER JOIN
    Employee ON Patient_Services.Doctor_ID = Employee.EmpID
WHERE
    (Patient_Services.S_ID = 1606) 
    AND CAST(MONTH(sdatetime) AS INT) BETWEEN 1 AND 6
GROUP BY 
    CAST(MONTH(sdatetime) AS INT), Employee.EFName, Employee.EMName, Employee.ELName
ORDER BY
    CAST(MONTH(Patient_Services.sdatetime) AS INT)

结果

代码语言:javascript
复制
TotalFee    |       Name        |   Months
38000       |    AKIF DILSHAD   |     1
1500        |    MATEEN AKRAM   |     1
1500        |    AKIF DILSHAD   |     2
2200        |    AKIF DILSHAD   |     3
1500        |    NASERA BHATTI  |     4
500         |    NASERA BHATTI  |     5
500         |    NASERA BHATTI  |     6
12000       |    AKIF DILSHAD   |     6

我想要的结果:

代码语言:javascript
复制
Name           |Jan     |Feb    |Mar    |Apr    |May    |June   |Total  |60%    |40%
AKIF DILSHAD   |38000   |1500   |2200   |0      |0      |12000  |53700  |32220  |21480
MATEEN AKRAM   |1500    |0      |0      |0      |0      |0      |1500   |900    |600
NASERA BHATTI  |0       |0      |0      |1500   |500    |500    |2500   |1500   |1000

请帮助转换我的查询,以获得我想要的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-05 07:03:40

请试试这个:

代码语言:javascript
复制
WITH cte as(
SELECT        COUNT(*)*500 AS TotalFee, ISNULL(Employee.EFName,'') +' '+ ISNULL(Employee.EMName,'') +' '+ ISNULL(Employee.ELName,'') as Name,CAST(MONTH(sdatetime) AS int) as Months
FROM            Patient_Services INNER JOIN
                         Employee ON Patient_Services.Doctor_ID = Employee.EmpID
WHERE        (Patient_Services.S_ID = 1606) AND CAST(MONTH(sdatetime) AS int) Between 1 AND 6
GROUP BY CAST(MONTH(sdatetime) AS int),Employee.EFName, Employee.EMName, Employee.ELName
--order by CAST(MONTH(Patient_Services.sdatetime) AS int)
)

    SELECT [NAME],
        SUM(CASE Months WHEN 1 THEN TotalFee ELSE 0 End) as 'Jan' ,
        SUM(CASE Months WHEN 2 THEN TotalFee ELSE 0 End) as 'Feb' ,
        SUM(CASE Months WHEN 3 THEN TotalFee ELSE 0 End) as 'Mar' ,
        SUM(CASE Months WHEN 4 THEN TotalFee ELSE 0 End) as 'Apr' ,
        SUM(CASE Months WHEN 5 THEN TotalFee ELSE 0 End) as 'May' ,
        SUM(CASE Months WHEN 6 THEN TotalFee ELSE 0 End) as 'Jun' ,
        SUM(TotalFee) AS Total,
        SUM(TotalFee)*.6 as [60%],
        SUM(TotalFee)*.4 as [40%]
      FROM  CTE
      GROUP BY [Name]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40435399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档