我在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) 我有一个数据库,并且我已经用我想要的数据创建了一个视图。数据看起来像这样:
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 ;,但似乎文本不是数据类型。有什么建议吗?
如何仅在视图不存在时创建视图.如果确实存在,我想删除视图并重新定义它.我也想要没有警告或错误.
我和#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)
...?
我有一个带有非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在这种情况下提供默认值并强制不可为空,但是没有有意义的默认值,这不应该从我理解的第一位发生.有什么想法发生了什么?
这是我的情况:
在我的表中,我有两个字段:
- 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)。我该如何设置?
我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语句中完成所有操作,这让我很头疼.
我创建了一个名为“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) 我正在尝试在 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) 我目前有一系列用于报告的物化视图视图 #1 和视图 #2。
使用PGAdmin,我想更改物化视图#1的代码(只需更改where子句,视图的结构保持不变),但物化视图#2是从物化视图#1生成的。
有没有办法推迟任何检查,以便我可以在不删除每个后续视图的情况下进行更改?