在临时 table 中添加 select 的计数
Add the count of select in temporary table
我想 运行 这个 SP,但它不工作并给出错误
A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.
ALTER PROCEDURE GET_RECORDS_FORDATE
@From_date Datetime,
@To_date Datetime
AS
BEGIN
SELECT *
INTO #temp
FROM (
select 0 SR_NO, 0 date, 0 Total, 0 Inward, 0 First_Level_Transfer, 0 Data_Entry_Transfer,
0 Second_Level_Transfer, 0 Outward_Transfer,
0 Closed, 0 Communication_Transfer
from inward_doc_tracking_hdr
) AS x
select count(*) tot_count,'Total' stage from inward_doc_tracking_hdr
where
doc_date between convert(datetime, @From_date ,103)
and convert(datetime, @To_date, 103)
select count(*) tot_count,'Inward' stage from inward_doc_tracking_hdr
where
doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag in ('6')
select count(*) tot_count,'1st Level Transfer' stage from inward_doc_tracking_hdr
where doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag in ('4','26','24')
select count(*) tot_count,'Data Entry Transfer' stage from inward_doc_tracking_hdr
where doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag in ('15','20')
select count(*) tot_count,'2nd Level Transfer' stage from inward_doc_tracking_hdr
where doc_date >=convert(datetime,'24/05/2016',103)
and status_flag in ('17','21')
select count(*) tot_count,'Outward Transfer' stage from inward_doc_tracking_hdr
where doc_date >=convert(datetime,'24/05/2016',103)
and status_flag='18'
select count(*) tot_count,'Close' stage from inward_doc_tracking_hdr
where doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag='5'
select count(*) tot_count,'Communication Transfer' stage from inward_doc_tracking_hdr
where doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag='16'
END
SELECT * FROM #temp
END
我想根据临时 table 中的列添加计数 SR_NO 和日期。
注意 目前我想添加 24 - 26 之间的日期
我正在使用sql-server-2005
如果我明白了
试试这个:
第一步:
正在创建 table#temp
CREATE TABLE #temp(
date datetime, Total int, Inward int, First_Level_Transfer int,
Data_Entry_Transfer int,
Second_Level_Transfer int, Outward_Transfer int,
Closed int, Communication_Transfer int
)
INSERT INTO #temp
(date, Total, Inward, First_Level_Transfer,
Data_Entry_Transfer,
Second_Level_Transfer, Outward_Transfer,
Closed, Communication_Transfer)
SELECT
doc_date, COUNT(*),
SUM(
CASE
WHEN status_flag = '6' THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag in ('4','26','24') THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag in ('15','20') THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag in ('17','21') THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag='18' THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag='5' THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag='16' THEN 1 ELSE 0
END)
FROM inward_doc_tracking_hdr
WHERE doc_date between @From_date and @To_date AND status_flag <> '6'
GROUP BY doc_date
我想,因为你想要计数器,所以这些都没有链接到一个 SR_NO。
告诉我是否可以,否则我们可以调整查询
我想 运行 这个 SP,但它不工作并给出错误
A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.
ALTER PROCEDURE GET_RECORDS_FORDATE
@From_date Datetime,
@To_date Datetime
AS
BEGIN
SELECT *
INTO #temp
FROM (
select 0 SR_NO, 0 date, 0 Total, 0 Inward, 0 First_Level_Transfer, 0 Data_Entry_Transfer,
0 Second_Level_Transfer, 0 Outward_Transfer,
0 Closed, 0 Communication_Transfer
from inward_doc_tracking_hdr
) AS x
select count(*) tot_count,'Total' stage from inward_doc_tracking_hdr
where
doc_date between convert(datetime, @From_date ,103)
and convert(datetime, @To_date, 103)
select count(*) tot_count,'Inward' stage from inward_doc_tracking_hdr
where
doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag in ('6')
select count(*) tot_count,'1st Level Transfer' stage from inward_doc_tracking_hdr
where doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag in ('4','26','24')
select count(*) tot_count,'Data Entry Transfer' stage from inward_doc_tracking_hdr
where doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag in ('15','20')
select count(*) tot_count,'2nd Level Transfer' stage from inward_doc_tracking_hdr
where doc_date >=convert(datetime,'24/05/2016',103)
and status_flag in ('17','21')
select count(*) tot_count,'Outward Transfer' stage from inward_doc_tracking_hdr
where doc_date >=convert(datetime,'24/05/2016',103)
and status_flag='18'
select count(*) tot_count,'Close' stage from inward_doc_tracking_hdr
where doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag='5'
select count(*) tot_count,'Communication Transfer' stage from inward_doc_tracking_hdr
where doc_date between convert(datetime, '24/05/2016',103)
and convert(datetime, '26/05/2016', 103)
and status_flag='16'
END
SELECT * FROM #temp
END
我想根据临时 table 中的列添加计数 SR_NO 和日期。
注意 目前我想添加 24 - 26 之间的日期
我正在使用sql-server-2005
如果我明白了
试试这个:
第一步:
正在创建 table#temp
CREATE TABLE #temp(
date datetime, Total int, Inward int, First_Level_Transfer int,
Data_Entry_Transfer int,
Second_Level_Transfer int, Outward_Transfer int,
Closed int, Communication_Transfer int
)
INSERT INTO #temp
(date, Total, Inward, First_Level_Transfer,
Data_Entry_Transfer,
Second_Level_Transfer, Outward_Transfer,
Closed, Communication_Transfer)
SELECT
doc_date, COUNT(*),
SUM(
CASE
WHEN status_flag = '6' THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag in ('4','26','24') THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag in ('15','20') THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag in ('17','21') THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag='18' THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag='5' THEN 1 ELSE 0
END),
SUM(
CASE
WHEN status_flag='16' THEN 1 ELSE 0
END)
FROM inward_doc_tracking_hdr
WHERE doc_date between @From_date and @To_date AND status_flag <> '6'
GROUP BY doc_date
我想,因为你想要计数器,所以这些都没有链接到一个 SR_NO。
告诉我是否可以,否则我们可以调整查询