我有一个在SQL中的透视类型报告(作为视图创建)。是否可以查询SQL数据透视报表并在另一个select语句中加入输出?
票号是ROWS,而票状态是COLUMNS。
在数据的值是时间戳的总时间的车票是处于该状态的花费(HH:SS:毫米)。 SQL枢轴视图的
样品(注:所有的状态都没有列出(见所有 SQL支点查询):
ticket_number closed completed new waiting-1
22 0:00:00 0:00:00 0:00:00 0:00:00
32 0:00:00 0:00:00 6:00:01 0:00:00
SQL枢轴查询:
v_pivottime
WITH t AS (
select
ticket_number,
ISNULL(status,'null') status,
update_date,
row_number() OVER (PARTITION BY ticket_number ORDER BY update_date) rn
from xxx.dbo.report
), s AS (
SELECT
t1.ticket_number,
t1.status,
t1.update_date,
t2.update_date prevdate,
case when t2.status=t1.status then DATEDIFF(s, t2.update_date, t1.update_date) end dif
FROM t t1
LEFT JOIN t t2 ON t1.ticket_number=t2.ticket_number AND t1.rn=t2.rn+1
)
SELECT *
FROM (
SELECT
ticket_number,
[status],
cast(dateadd(s,sum(dif),0) as time(0)) [time]
FROM s
GROUP BY ticket_number,status) src
PIVOT
(
min([time])
for [status] in ([Closed], [Complete], [New], [Waiting-1], [Waiting-2], [Waiting-3], [stoptime], [Research-1], [Research-2], [Resolved], [Special Request], [Opened Request], [null])
) piv;
所查询视图(下)我想补充(加入?)枢轴输出,和在顶部添加状态名称(列),以及在HH输出的值:mm:ss的
v_last_update
select
ctr1.ticket_number,
ctr1.status,
ctr1.create_date,
ctr1.created_by,
ctr1.customer,
ctr1.description,
ctr1.update_sequence,
ctr1.update_date
FROM
xx.dbo.report ctr1
JOIN (
select ticket_number as ticket_number_d,
MAX(update_date) as max_update_date,
MAX(update_sequence) as max_ update_sequence
from xx.dbo.report
group by ticket_number
) ctr2
ON ctr1.ticket_number = ctr2.ticket_number_d
AND ctr1.update_date = ctr2.max_update_date
AND ctr1.update_sequence = ctr2.max_update_sequence
WHERE customer <> ‘Bread’
ORDER BY max_update_date ASC;
*想看看是否有一种方法,我可以稍微执行从v_last_update查询准考证号码一个VLOOKUP的交易类型,并添加列到输出列的结束。希望为每个状态添加一列,并插入该票证状态的时间。这可能会让我疯狂!
谢谢!
-P
假设,即所有的疑问按预期投放,只需要创建一个视图或(直列!) - TVF从支点查询,并加入它,如果它是一个表... – Shnugo