create view面有union all 不能排序
--建
create view ccc as
(select * from (
select CONVERT(varchar(100),a.Sub_ShipDate1,23) HS_Shipdate,a.TeamHandlingBy,a.JobNumber,a.Version,
a.Bill_to,a.Customer,a.JobName,a.Sub_Qty1 Quantity,
isnull(a.SetDeclareFactory,'待') SetDeclareFactory,
b.currency,b.unitprice_d,a.Sub_Qty1 Quantity1,a.Sub_Qty1*b.unitprice_d Total_Sales,
b.status,b.pcost,b.pcostratio from schedulingShipSchedule a, MailingPriceCalVH as b
where a.Sub_ShipDate1<>''and a.Sub_Qty1<>'' and a.JobNumber=b.ordernumber
and a.Version=b.versionno and a.TeamHandlingBy='Mailing'
union all
select CONVERT(varchar(100),a.Sub_ShipDate2,23) HS_Shipdate,a.TeamHandlingBy,a.JobNumber,a.Version,
a.Bill_to,a.Customer,a.JobName,a.Sub_Qty2 Quantity,
isnull(a.SetDeclareFactory,'待') SetDeclareFactory,
b.currency,b.unitprice_d,a.Sub_Qty2 Quantity1,a.Sub_Qty2*b.unitprice_d Total_Sales,
b.status,b.pcost,b.pcostratio from schedulingShipSchedule a, MailingPriceCalVH as b
where a.Sub_ShipDate2<>''and a.Sub_Qty2<>'' and a.JobNumber=b.ordernumber
and a.Version=b.versionno and a.TeamHandlingBy='Mailing'
)
as qqq order by JobNumber
)
--出信息
Msg 1033, Level 15, State 1, Procedure ccc, Line 22
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries,
and common table expressions, unless TOP, OFFSET or FOR XML is also specified.
----如果不用 order by JobNumber 正常,怎可以排序
[解决办法]
视图中order by 时要用,Top,如下试试,应该可以
CREATE VIEW [dbo].[View_1]
AS
SELECT TOP (100) PERCENT HS_Shipdate, TeamHandlingBy, JobNumber, Version, Bill_to, Customer, JobName, Quantity, SetDeclareFactory, currency,
unitprice_d, Quantity1, Total_Sales, status, pcost, pcostratio
FROM (SELECT CONVERT(varchar(100), a.Sub_ShipDate1, 23) AS HS_Shipdate, a.TeamHandlingBy, a.JobNumber, a.Version, a.Bill_to, a.Customer,
a.JobName, a.Sub_Qty1 AS Quantity, ISNULL(a.SetDeclareFactory, '待') AS SetDeclareFactory, b.currency, b.unitprice_d,
a.Sub_Qty1 AS Quantity1, a.Sub_Qty1 * b.unitprice_d AS Total_Sales, b.status, b.pcost, b.pcostratio
FROM dbo.schedulingShipSchedule AS a CROSS JOIN
dbo.MailingPriceCalVH AS b
WHERE (a.Sub_ShipDate1 <> '') AND (a.Sub_Qty1 <> '') AND (a.JobNumber = b.ordernumber) AND (a.Version = b.versionno) AND
(a.TeamHandlingBy = 'Mailing')
UNION ALL
SELECT CONVERT(varchar(100), a.Sub_ShipDate2, 23) AS HS_Shipdate, a.TeamHandlingBy, a.JobNumber, a.Version, a.Bill_to, a.Customer,
a.JobName, a.Sub_Qty2 AS Quantity, ISNULL(a.SetDeclareFactory, '待') AS SetDeclareFactory, b.currency, b.unitprice_d,
a.Sub_Qty2 AS Quantity1, a.Sub_Qty2 * b.unitprice_d AS Total_Sales, b.status, b.pcost, b.pcostratio
FROM dbo.schedulingShipSchedule AS a CROSS JOIN
dbo.MailingPriceCalVH AS b
WHERE (a.Sub_ShipDate2 <> '') AND (a.Sub_Qty2 <> '') AND (a.JobNumber = b.ordernumber) AND (a.Version = b.versionno) AND
(a.TeamHandlingBy = 'Mailing')) AS qqq
ORDER BY JobNumber
[解决办法]
--以下:
create view ccc as
(
SELECT TOP (100) PERCENT *
FROM
(
select CONVERT(varchar(100),a.Sub_ShipDate1,23) HS_Shipdate,a.TeamHandlingBy,a.JobNumber,a.Version,
a.Bill_to,a.Customer,a.JobName,a.Sub_Qty1 Quantity,
isnull(a.SetDeclareFactory,'待') SetDeclareFactory,
b.currency,b.unitprice_d,a.Sub_Qty1 Quantity1,a.Sub_Qty1*b.unitprice_d Total_Sales,
b.status,b.pcost,b.pcostratio from schedulingShipSchedule a, MailingPriceCalVH as b
where a.Sub_ShipDate1<>''and a.Sub_Qty1<>'' and a.JobNumber=b.ordernumber
and a.Version=b.versionno and a.TeamHandlingBy='Mailing'
union all
select CONVERT(varchar(100),a.Sub_ShipDate2,23) HS_Shipdate,a.TeamHandlingBy,a.JobNumber,a.Version,
a.Bill_to,a.Customer,a.JobName,a.Sub_Qty2 Quantity,
isnull(a.SetDeclareFactory,'待') SetDeclareFactory,
b.currency,b.unitprice_d,a.Sub_Qty2 Quantity1,a.Sub_Qty2*b.unitprice_d Total_Sales,
b.status,b.pcost,b.pcostratio from schedulingShipSchedule a, MailingPriceCalVH as b
where a.Sub_ShipDate2<>''and a.Sub_Qty2<>'' and a.JobNumber=b.ordernumber
and a.Version=b.versionno and a.TeamHandlingBy='Mailing'
) a
ORDER BY JobNumber
)