与计数记录的SQL相关的查询
我有一个反馈表,在其中我从客户那里得到反馈。他的桌子看起来像这样与计数记录的SQL相关的查询,sql,asp.net-mvc,database,linq,lambda,Sql,Asp.net Mvc,Database,Linq,Lambda,我有一个反馈表,在其中我从客户那里得到反馈。他的桌子看起来像这样 ID Service Food Behavior Environment OverallExprience Flight Date 1 Excellent VeryGood Good Bad Poor EK0603 2018-03-29 2 Excellent Good VeryGood Excell
ID Service Food Behavior Environment OverallExprience Flight Date
1 Excellent VeryGood Good Bad Poor EK0603 2018-03-29
2 Excellent Good VeryGood Excellent Poor EK0603 2018-03-29
Excellent Very Good Good Bad poor
Service 2 0 0 0 0
Food 0 1 1 0 0
Behavior 0 1 1 0 0
Environment 1 0 0 1 0
我只想从员工那里搜索日期(from->to)并获得简要报告,其中包括
- 优秀学生人数
- 数量非常好
- 货物数量
- 坏的数量
- 可怜的
ID Service Food Behavior Environment OverallExprience Flight Date
1 Excellent VeryGood Good Bad Poor EK0603 2018-03-29
2 Excellent Good VeryGood Excellent Poor EK0603 2018-03-29
Excellent Very Good Good Bad poor
Service 2 0 0 0 0
Food 0 1 1 0 0
Behavior 0 1 1 0 0
Environment 1 0 0 1 0
困在这里需要帮助。如果答案是在LINQ query中,这将非常有用,因为您想将列转换为行,我想您需要一些联合。 对于每个“类别”,您可能需要一个不同的查询,对于每个类别,您应该计算每个选项的投票数 请尝试此查询,它应该执行以下操作:
SELECT MAX('Service') AS Category,
COUNT(CASE WHEN t.Servive = 'Excellent' THEN 1 END) AS Excellent,
COUNT(CASE WHEN t.Servive = 'VeryGood' THEN 1 END) AS Very_Good,
COUNT(CASE WHEN t.Servive = 'Good' THEN 1 END) AS Good,
COUNT(CASE WHEN t.Servive = 'Bad' THEN 1 END) AS Bad,
COUNT(CASE WHEN t.Servive = 'Poor' THEN 1 END) AS Poor
FROM table1 t
WHERE t.Date BETWEEN '2018-03-29' AND '2018-03-29'
UNION
SELECT MAX('Food') AS Category,
COUNT(CASE WHEN t.Food = 'Excellent' THEN 1 END) AS Excellent,
COUNT(CASE WHEN t.Food = 'VeryGood' THEN 1 END) AS Very_Good,
COUNT(CASE WHEN t.Food = 'Good' THEN 1 END) AS Good,
COUNT(CASE WHEN t.Food = 'Bad' THEN 1 END) AS Bad,
COUNT(CASE WHEN t.Food = 'Poor' THEN 1 END) AS Poor
FROM table1 t
WHERE t.Date BETWEEN '2018-03-29' AND '2018-03-29'
UNION
SELECT MAX('Behavior') AS Category,
COUNT(CASE WHEN t.Behavior = 'Excellent' THEN 1 END) AS Excellent,
COUNT(CASE WHEN t.Behavior = 'VeryGood' THEN 1 END) AS Very_Good,
COUNT(CASE WHEN t.Behavior = 'Good' THEN 1 END) AS Good,
COUNT(CASE WHEN t.Behavior = 'Bad' THEN 1 END) AS Bad,
COUNT(CASE WHEN t.Behavior = 'Poor' THEN 1 END) AS Poor
FROM table1 t
WHERE t.Date BETWEEN '2018-03-29' AND '2018-03-29'
UNION
SELECT MAX('Environment') AS Category,
COUNT(CASE WHEN t.Environment = 'Excellent' THEN 1 END) AS Excellent,
COUNT(CASE WHEN t.Environment = 'VeryGood' THEN 1 END) AS Very_Good,
COUNT(CASE WHEN t.Environment = 'Good' THEN 1 END) AS Good,
COUNT(CASE WHEN t.Environment = 'Bad' THEN 1 END) AS Bad,
COUNT(CASE WHEN t.Environment = 'Poor' THEN 1 END) AS Poor
FROM table1 t
WHERE t.Date BETWEEN '2018-03-29' AND '2018-03-29'
所以你只是想让人们为你编写解决方案?不是真的,只是想得到查询的提示你到目前为止尝试了什么?从简单开始,然后展开。从“反馈”组中选择“计数(*),方法是使用过多的经验,这样做,但不能在一次中获得所需的输出query@FaizanNaeem看起来不像LINQ?也许我的朋友能帮你?谢谢。通过执行此命令获得所需的输出