标签: sql-view

SQL Server视图在Entity Framework中返回不同的结果

我在SQl服务器中有一个sql视图:

SELECT        dbo.job.idJob, SUM(dbo.tracking.iQty) AS TotalOrdered, dbo.tracking.idProduct
FROM            dbo.tracking INNER JOIN
                         dbo.job ON dbo.tracking.idJob = dbo.job.idJob
GROUP BY dbo.tracking.idAction, dbo.tracking.idProduct, dbo.job.idJob
Run Code Online (Sandbox Code Playgroud)

在SQL Server中它返回:

idJob       TotalOrdered idProduct
----------- ------------ -----------
5000        150          9
5000        75           18
5006        20           3
Run Code Online (Sandbox Code Playgroud)

问题:

当我通过WPF 4.5项目中的Entity Framework 6访问此视图时,它返回不同的结果.我将视图添加到edmx文件,然后以下列方式调用视图:

Public Function GetTracking_Ordered(idJob As Integer) As Collection(Of vw_Tracking_Ordered) Implements ITrackingDataService.GetTracking_Ordered
            Try
                Using context = _ModelService.NewContext

                    Dim trackingList = (From recs In context.vw_Tracking_Ordered Where recs.idJob = idJob Select recs).ToList
                    Return New Collection(Of vw_Tracking_Ordered)(trackingList)

                End Using
            Catch ex As …
Run Code Online (Sandbox Code Playgroud)

.net vb.net entity-framework sql-view entity-framework-6

7
推荐指数
1
解决办法
1648
查看次数

在 SQL 中向视图添加新列

我有一个数据库,并且我已经用我想要的数据创建了一个视图。数据看起来像这样:

    n     |   value |
----------+---------+
 50404791 |     112 | 
  5034591 |     164 |
 50280287 |      31 |
Run Code Online (Sandbox Code Playgroud)

我想添加一列这样的文本:

    n     |   value | status |
----------+---------+--------+
 50404791 |     112 |default | 
  5034591 |     164 |biggest |
 50280287 |      31 |smallest|
Run Code Online (Sandbox Code Playgroud)

我尝试过Alter Table Table1 Add Column status text ;,但似乎文本不是数据类型。有什么建议吗?

sql postgresql sql-view

7
推荐指数
1
解决办法
2万
查看次数

mysql只有在尚不存在时才创建视图

如何仅在视图不存在时创建视图.如果确实存在,我想删除视图并重新定义它.我也想要没有警告或错误.

mysql sql sql-view

6
推荐指数
1
解决办法
6303
查看次数

PostgreSQL视图:引用另一个计算字段中的一个计算字段

我和#1895500有同样的问题,但PostgreSQL不是MySQL.

如何定义具有计算字段的视图,例如:

 (mytable.col1 * 2) AS times_two
Run Code Online (Sandbox Code Playgroud)

...并创建另一个基于第一个的计算字段:

 (times_two * 2) AS times_four
Run Code Online (Sandbox Code Playgroud)

...?

sql postgresql calculated-columns sql-view

6
推荐指数
1
解决办法
3436
查看次数

SQL视图从非空表中推断出可空列?

我有一个带有非null"quantity"(十进制)和"status"(int)列的Product表,我在这个表上创建了一个带有以下case表达式的视图:

SELECT P.ProductTypeId,
       (CASE WHEN P.StatusId IN (5, 8) THEN 0 ELSE -P.Quantity END) AS Quantity,
       ...
FROM Product P
Run Code Online (Sandbox Code Playgroud)

ProductTypeId被正确推断为非null.但是,即使基础列不可为空,也会将此视图的"数量"列推断为可为空.这对我没有任何意义.

我可以使用ISNULL/COALESCE在这种情况下提供默认值并强制不可为空,但是没有有意义的默认值,这不应该从我理解的第一位发生.有什么想法发生了什么?

sql dbnull sql-view

6
推荐指数
1
解决办法
844
查看次数

SQL Server 使用条件在 VIEW 中添加计算列

这是我的情况:

在我的表中,我有两个字段:

- Price (decimal (15,4)
- TaxId (int)
Run Code Online (Sandbox Code Playgroud)

TaxId value 没有存储在任何地方,但只有两个值(实际上是 3)。

- 1 (8.5%)
- 2 (20%)
- NULL (no tax)
Run Code Online (Sandbox Code Playgroud)

现在我需要在我看来计算列来计算含税的新价格。

任何的想法?

我去了类似的东西:

SELECT...
CASE TaxId
   WHEN 1 THEN Price *1.085 AS test
   WHEN 2 THEN Price *1.2 AS test
   WHEN NULL THEN Price  AS test END
FROM...
Run Code Online (Sandbox Code Playgroud)

更新:

我已经成功地执行了查询。

CASE dbo.Table.TaxId WHEN 1 THEN dbo.Table.Price*1.085 WHEN 2 THEN dbo.Table.Price*1.2 ELSE dbo.Table.Price END AS CalcualtedPrice
Run Code Online (Sandbox Code Playgroud)

现在我只需要将CalculatedPrice 设为十进制(15,4)。我该如何设置?

sql calculated-columns sql-server-2008 sql-view

6
推荐指数
1
解决办法
4万
查看次数

在MySQL上选择两个数字之间的序列

people在MySQL上以两个日期命名这个表:

| Name | start_date | end_date   |
| John | 2007-03-01 | 2009-10-12 |
| Mike | 2001-06-06 | 2010-12-01 |
Run Code Online (Sandbox Code Playgroud)

我想创建一个视图,让我按活动年份搜索,在活动年份之间start_date进行搜索end_date.所以,我希望得到一个包含多年的字段,如下所示:

| Name | activity_years                                    |
| John | 2007,2008,2009                                    |
| Mike | 2001,2002,2003,2004,2005,2006,2007,2008,2009,2010 |
Run Code Online (Sandbox Code Playgroud)

我尝试了一些方法,但我无法得到它.因为我想创建一个视图,所以我必须在SELECT语句中完成所有操作,这让我很头疼.

mysql sql date sql-view

6
推荐指数
1
解决办法
2712
查看次数

插入视图时出现“ORA-01733: 此处不允许虚拟列”

我创建了一个名为“view_employee”的视图,如下所示:

CREATE VIEW view_employee AS
SELECT employee.surname || ', ' || employee.name AS comp_name, employee.sex, sections.name AS section_name, employee_age
FROM sections, employee WHERE employee.section = sections.sect_code;
Run Code Online (Sandbox Code Playgroud)

我想使用视图将数据插入表中,如下所示:

INSERT INTO view_employee VALUES ('Doe, John', 'm', 'Marketing', 34);
Run Code Online (Sandbox Code Playgroud)

以下是表的列和约束:

create table sections(
  sect_code number(2),
  name varchar2(20),
  income number(5,2)
   constraint CK_sections_income check (income>=0),
  constraint PK_sections primary key (sect_code)
 );

 create table staff(
  ident number(5),
  document char(8),
  sex char(1)
   constraint CK_staff_sex check (sex in ('f','m')),
  surname varchar2(20),
  name varchar2(20),
  address varchar2(30),
  section number(2) not …
Run Code Online (Sandbox Code Playgroud)

sql oracle10g sql-view sql-insert

6
推荐指数
1
解决办法
5万
查看次数

PostgreSQL 中的 TRIGGER ON VIEW 不触发

我正在尝试在 PostgreSQL 9.6 中添加触发器VIEW

这是我的观点:

CREATE VIEW names AS
SELECT one.name AS name_one, two.name AS name_two, three.name AS name_three
FROM table_one one
LEFT JOIN table_two two ON one.id = two.id
LEFT JOIN table_three three ON two.id = three.id;
Run Code Online (Sandbox Code Playgroud)

这是我的触发函数:

CREATE OR REPLACE FUNCTION notify_name_changed() RETURNS trigger AS $BODY$
BEGIN
  PERFORM pg_notify('name_changed', row_to_json(NEW)::text);
  RETURN NULL;
END; 
$BODY$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

和我的CREATE TRIGGER

CREATE TRIGGER notify_name_changed INSTEAD OF INSERT OR UPDATE OR DELETE ON "names"
  FOR EACH ROW EXECUTE …
Run Code Online (Sandbox Code Playgroud)

sql database postgresql triggers sql-view

6
推荐指数
1
解决办法
2727
查看次数

如何使用依赖视图更改物化视图

我目前有一系列用于报告的物化视图视图 #1 和视图 #2。

使用PGAdmin,我想更改物化视图#1的代码(只需更改where子句,视图的结构保持不变),但物化视图#2是从物化视图#1生成的。

有没有办法推迟任何检查,以便我可以在不删除每个后续视图的情况下进行更改?

postgresql materialized-views sql-view

6
推荐指数
1
解决办法
6389
查看次数