如何写一个视图

时间:2011-08-12 04:19:10

标签: sql sql-server sql-server-2005

我有两个表:headeritemslineitems

HeaderItems表如下:

enter image description here

Lineitems表

enter image description here

标题项的主键:SrNo,Prefix,TicketNo和Notification 订单项的主键:SubSrNo,Prefix,TicketNo,NotificationNo

如果在标题项表中序列号标志包含'X',那么将根据Required Qty字段在lineItems表中输入,即如果需要qty包含2,那么Lineitems表中将有2个条目。

现在我想创建一个视图,它给出了如下输出:

Notification   Raw material   Serial number 
-------------------------------------------
34186          68
34186          4110           345345
34186          4110           534557

此序列号字段不在标题项中,仅存在于订单项中。

2 个答案:

答案 0 :(得分:0)

SELECT Notification, [Raw material], [Serial number]
FROM (
    SELECT Notification, [Raw material], NULL [Serial number], 1 ord
    FROM HeaderItems
    WHERE Notification = ...
  UNION
    SELECT Notification, [Raw material], [Serial number], 2 ord
    FROM Lineitems
    WHERE Notification = ...
)
ORDER BY Notification, ord, [Raw material], [Serial number]

这样做是将两个表(UNION)组合在一起,同时添加一个额外的列,仅用于排序并确保标题项显示在lineitems上方。

答案 1 :(得分:0)

阅读JOIN的内容。

CREARE VIEW vwNotification
AS
SELECT HI.Notification, HI.Raw material, LI.Serial_number
FROM HeaderItems HI 
     LEFT JOIN LineItems LI ON HI.Notification=LI.Notification_No 
                               and HI.Raw_material=HL.Raw_material
ORDER BY HI.Notification, HI.Raw material, LI.Serial_number