从sql数据库创建视图[关闭]

Posted

技术标签:

【中文标题】从sql数据库创建视图[关闭]【英文标题】:making a view from sql database [closed] 【发布时间】:2013-10-06 10:58:42 【问题描述】:

我有两张桌子:

1. Products with the following columns:
* ID
* SerialNumber
* Name
2. ProductsData
* ID
* ProductID
* DateOfData
* DataValue

我想查看以下内容:

* Product name.
* product serial number
* the last date of data for this product.
* the data value in this datetime

如何通过 SQL 查询来制作视图?

谢谢

【问题讨论】:

我尝试了使用 innerjoin 的方法,但它返回了第二个表中的所有行。我只想要最后的数据 @user1902346 下一次,将您的尝试与您的问题一起发布,这样人们就会知道您在提问之前为此付出了一些努力。这通常会导致更多的答案和更少的反对票。 【参考方案1】:
CREATE VIEW vw_SomeName
AS
SELECT P.Name, P.SerialNumber, PD.DataValue, MAX(PD.DateOfData)
FROM Products P INNER JOIN ProductsData PD
ON P.ID = PD.ProductID
GROUP BY P.Name, P.SerialNumber, PD.DataValue

或者你也可以试试这个

    CREATE VIEW vw_SomeName
    AS
    SELECT P.Name, P.SerialNumber, PD.DataValue, LastDate
    FROM Products P 
                    CROSS APPLY (
                                SELECT TOP 1  PD.DataValue, MAX(PD.DateOfData) AS LastDate
                                FROM ProductsData PD
                                WHERE P.ID = PD.ProductID
                                GROUP BY PD.DataValue
                                ORDER BY LastDate DESC
                                ) PD

【讨论】:

谢谢。我如何获得该日期的 DataValue ? 我已经编辑了代码,请看一下:) 谢谢,但第二个是语法错误,第一个返回到产品数据中包含日期的所有行 对不起,当您不在 sql server 上并且只在您的脑海中进行查询时,很难在您的脑海中描绘整个查询:) 现在看看我已经编辑了它,希望它应该可以正常工作现在好了。 它有效。伟大的。如果可能的话,我还有另一个问题 :) :我想在产品线中写下过去 24 小时内的平均值(另一列)。有办法吗?【参考方案2】:

试试这个

SELECT Name, SerialNumber, ABB3.last_date, ABB3.DataValue 
FROM Products AS ABB4
    LEFT JOIN
        (SELECT ABB2.ProductID, last_date, DataValue
        FROM ProductsData AS ABB2
            LEFT JOIN 
            (SELECT ProductID, MAX(DateOfData) AS last_date
            FROM ProductsData
            GROUP BY ProductID) AS ABB1 ON ABB1.ProductID = ABB2.ProductID 
            AND ABB1.last_date = ABB2.DateOfData)
        AS ABB3 ON ABB3.ProductId = ABB4.ID

【讨论】:

以上是关于从sql数据库创建视图[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

用于创建视图的 SQL 查询 [关闭]

sql server 创建视图添加表时出现从其他数据库导入的表未显示出来

从多个数据库引擎创建 SQL 服务器视图?

创建数据库视图与创建 Hibernate 映射 - 性能 [关闭]

SQL:如何从递归查询创建视图?

PL/SQL 过程 X 引用视图 Y [关闭]