【发布时间】:2016-08-30 14:45:36
【问题描述】:
我不是 SQL 专家。我有以下查询,我想做的是将 Status 作为单独的列移动并计算不同的 actionid。
查询:
SELECT
CONVERT (Date,[ActionTime],103) AS DATE,
COUNT(DISTINCT ActionID) AS Actions,
VehicleID AS VehicleID,
DriverID AS DriverID,
CASE
WHEN ActionTypeID = 7 THEN 'Not Suitable'
WHEN ActionTypeID = 8 THEN 'Job Acknowledged'
WHEN ActionTypeID = 9 THEN 'Job Accepted'
WHEN ActionTypeID = 10 THEN 'Job Rejected'
WHEN ActionTypeID = 12 THEN 'Job Recall'
WHEN ActionTypeID = 66 THEN 'Child Fleet Logon'
WHEN ActionTypeID = 67 THEN 'Child Fleet Logoff'
ELSE '' END AS Status
FROM [TaxiHistory].[dbo].[Actions]
WHERE actiontime between '2016-02-01 00:00:00' AND '2016-02-02 23:59:59'
AND ActiontypeID IN (7,8,9,10,12,66,67)
GROUP BY CONVERT (Date,[ActionTime],103),
CASE
WHEN ActionTypeID = 7 THEN 'Not Suitable'
WHEN ActionTypeID = 8 THEN 'Job Acknowledged'
WHEN ActionTypeID = 9 THEN 'Job Accepted'
WHEN ActionTypeID = 10 THEN 'Job Rejected'
WHEN ActionTypeID = 12 THEN 'Job Recall'
WHEN ActionTypeID = 66 THEN 'Child Fleet Logon'
WHEN ActionTypeID = 67 THEN 'Child Fleet Logoff'
ELSE '' END,
VehicleID,
DriverID
【问题讨论】:
-
请发布示例数据和预期结果。
-
那么您想要计算与特定 ActionTypeID 关联的所有不同 ActionID 的数量吗?您将获得由特定驾驶员操作的车辆,该车辆具有对该车辆执行的操作数的计数,该车辆具有整个设置的状态,我猜,索赔或归档。所以你只需要 ActionTypeID |完成的不同操作总数?
-
我尝试过这个 Felix,一直在努力寻找如何上传文件,所以希望一张图片就足够了,它应该可以使用原始帖子中的链接。
-
列标题将是日期、vehilceID、VehicleID、不适合、已确认的工作等。行将读取,在 2016 年 2 月 2 日 driverid 123 中的 vehicleid 456 中有 4 不适合,6 已确认, 2 工作接受等。我希望这是有道理的
标签: sql sql-server tsql pivot case