在MS SqlServer中,有许多问题与在另一个存储过程中共享一个存储过程的数据结果有关
根据SQLServer的版本,人们会建议使用临时表、xml(SQLServer2005)或表变量(SQLServer2008)
有一篇由编写的优秀文章提供了全面的答案,并列出了不同版本SQL中可用的所有选项:
我觉得值得分享
我在建议使用时遇到了这篇文章,这是我以前并不熟悉的内容。有一篇很棒的文章,提供了全面的答案,并列出了不同版本SQL中可用的所有选项:
本文处理两个相关的问题
问题:
我
以下是表格:
threads:
id, date, title, text
comments:
id, thread_id, date, comment
如何在顶部列出最后一个已评论的线程
目前的情况如下:
$threads = mysql_query("SELECT id, title FROM threads ORDER BY date ASC");
while ($thread = mysql_fetch_assoc($threads)) {
echo $thread['tit
我正在重写一些旧的存储过程,在使用函数而不是内联代码时遇到了意外的性能问题
该功能非常简单,如下所示:
ALTER FUNCTION [dbo].[GetDateDifferenceInDays]
(
@first_date SMALLDATETIME,
@second_date SMALLDATETIME
)
RETURNS INT
AS
BEGIN
RETURN ABS(DATEDIFF(DAY, @first_date, @second_date))
END
我
我有一张特定产品的订单表和一张正在销售的产品表。(这不是理想的数据库结构,但这超出了我的控制范围。)我想做的是通过product number将order表与sale表进行外部联接,但我不想包含sale表中的任何特定数据,如果联接存在,我只需要一个Y,如果不在输出中,则需要N。有人能解释一下我是如何用SQL实现这一点的吗
提前谢谢 您应该能够使用该构造,它看起来像这样:
select
order.foo,
case
when sale.argle is null
对我的另一个问题的答案提出质疑:
如何明确使用不同于默认数据库排序规则的排序规则更好地比较2个(非N')符号
更新:我需要比较从数据库中提取的char()或varchar()值,并将它们放入变量@s1和@s2中
use dbName;
--here I alternated different db names with different collations
declare @s1 nchar(1)='à'
declare @s2 nchar(1)='a'
select
c
如果查询以很短的时间间隔(例如每5秒)不断发送到数据库,那么生成的读取次数是否会导致性能或可用性方面的问题?如果数据库是Oracle,有没有什么技巧可以用来避免性能下降?如果查询来自应用程序,有没有办法通过软件设计减少任何影响?除非您的查询非常密集或编写得很糟糕,否则每隔几秒钟运行一次不会引起任何明显的问题。对于通常以毫秒为单位的查询,这种情况并不常见
你可能仍然想优化它,因为有更好的方法。在Oracle和ADO.NET中,您可以对第一次运行查询的命令使用OracleDependency,然后订
SQL Server中的字段设置了默认值。现在我使用LINQ来访问/追加/修改和删除表中的记录,但我想知道为什么需要为插入时具有默认值的字段赋值。考虑这一行代码。
SQL
C#使用LINQ
SampleTable entity = new SampleTable();
entity.values1 = 1;
entity.values2 = DateTime.Now //I do have default set on sql why do i need to do this
//Do Som
我四处搜索了不少,如果有人能把我链接到一个解决方案或回答我的问题,那就太好了。
问题是我有一个postgresql表,其中包含很多单引号,我不知道如何去掉它们,因为很明显
update tablename set fieldname= NULL where fieldname=' ;
行不通
update tablename set fieldname= NULL where fieldname='''' ;
或
更好地利用这一点:
UPDATE tbl SET col = repla
我有一个类似以下的问题:
SELECT A.a, A.b, B.c,
(CASE WHEN ... THEN ... ELSE ... END) AS CalculatedValue,
B.d
FROM dbo.TableA A INNER JOIN
dbo.TableB B ON (...)
WHERE (CASE WHEN ... THEN ... ELSE ... END) BETWEEN @DayStart AND @DayEnd
GROUP BY A.a, (CA
我的选择带来了类似以下内容:
SELECT top 5
day_description,
count(numberofdays) as number
FROM mytable
where department = 'departmentname'
group by day_description
有没有一种方法可以添加一个新列,其中1-5,1是值最高的行,5是值最低的行。看起来是这样的:
day description number
holida
我需要在SQL Server 2008中的当前用户定义表类型中添加更多的列
但我在表下的特定数据库中没有看到任何表类型
我需要检查的具体位置以及如何修改SQL Server 2008中现有用户定义表类型的设计
我正在使用SQLServer2008和SSMS
我可以在SSMS中找到该表
这样我就可以去修改表类型了
谢谢
上一个问题的答案
请任何人帮助sql更改类型表语法添加列?
如何插入任何新列。。。因为ALTER不工作。。它是禁用的
用户定义的类型在创建后无法修改,因为
更改可能使表或索引中的数
我在VB.NET中从数据库中查询数据以生成报表时遇到了一个问题。我使用业务对象来做报告。下面是我的示例数据:
___________________________________________________________________________
| | | | | | |
| Id | Item | Unit | Unit Pri
我正在写SSRS报告
有两个主要字段CurrentMV和PreviousMV
两者都有不同的公式,但我需要更改字段PreviousMV以获取CurrentMV的值,但previous date值我正在尝试使用SSRS的previous函数
请帮帮我
字段CurrentMV具有类似=Sum(字段!CurrentMV.Value)
您应该能够使用:
=Previous(Sum(Fields!CurrentMV.Value))
或
.你说你在使用Sum。。。那么这些是组页眉/页脚行?现在有什么?你试
我有一个表,它有一个日期时间字段“updated_at”。我的许多查询将使用范围查询(如在>某个日期更新的行)来查询此字段
我已经在更新的_中添加了一个索引,但是我的大多数查询仍然非常慢,即使我对返回的行数有限制
我还可以做些什么来优化查询日期时间字段的查询?通常数据库优化器不会选择对开放范围使用索引,例如在某个日期更新的
但是,在许多情况下,datatime列不会超过“now”,因此您可以通过使用介于之间的将条件转换为一个范围来保留>somedate的语义,如下所示:
where update
我有以下疑问
select top 25
tblSystem.systemName,
tblCompany.name
from
tblSystem
join tblCompany
on tblSystem.fkCompanyID = tblCompany.pkCompanyID
order by
tblSystem.systemName,
tblCompany.name
它生成图片中的第一个执行计划,第二个是相同的查询,没有排
在为某些AS400数据创建sql备份/web查看器时,必须手动清理某些数据
在此过程中,数据库中的日期最终被存储为两种格式的字符串:
YYYYMMDD
MM/DD/YYYY
为了保存原始数据,我想将所有的MM/DD/YYYY转换为YYYYMMDD。有没有可以解决这个问题的查询?比如:
SELECT commentDate from SomeTable
IF FORMAT(commentDate) LIKE '00/00/0000'
commentDate = FORM
您将如何使用LINQ to实体来完成以下查询
SELECT [id] ,[value1], [value2], [dateValue]
FROM table
WHERE dateValue IN (
SELECT MAX(dateValue)
FROM table
GROUP BY id
)
表中有多个具有相同id的条目,因此我只希望每个id中有一个具有最大日期值。此外,dateValue还包含一个时间组件,精确到毫秒,并且不会重复
我知道LINQ To Entitie
我有一张桌子桌子1:
D1----D2
123----NULL
1a3----NULL
35s----NULL
tg45---NULL
如果我这样做:
SELECT * FROM Table_1 A
RIGHT JOIN(
SELECT *
FROM Table_1 B
WHERE
SUBSTRING(B.D1,len(B.D1)-1,100) NOT LIKE '%[^0-9]%') C
ON A.D1=C.D1
WHERE CONVERT(INT,(SUBSTRING(A
标签: Sql
postgresql-9.4jsonb
有两个表格:
授权联系人(auth_Contacts):
联系人包含具有属性的联系人数组{contact_id,type}
讨论:
(
contact_id varchar
discussion_id varchar
discussion_details jsonb
)
表auth_contacts至少有100k条记录,因此非JSONB类型是不合适的,因为它会使记录量增加一倍或三倍
验证联系人的示例数据:
(
userid varchar
contacts jsonb
)
userid |
我有一个类似于以下的数据模型,它经过简化,只显示了这个问题(SQL Fiddle底部的链接):
一个人在数据库中表示为一个元表行,该行具有一个名称和多个属性,这些属性作为键值对存储在数据表中(键和值在单独的列中)
预期结果
现在我想检索所有用户及其所有属性。属性应在单独的列中作为json对象返回。例如:
name, data
Florian, { "age":23, "color":"blue" }
Markus, { "age":24, "color":"green" }
我的方法
现在我
? 请将更新后的查询附加到您的问题,因为我们看不到“This”是什么。或者更好:OH.Created>=Cast(@FromDate作为日期)和OH.Created
我怀着沉重的心情来寻求对欧比问题的帮助。我有两个方面想加入到使用OBI 11g的分析中。以下是模式:
Distribution
|-- Purchase History
| |-- Billing Info
| |-- Order Number
| |-- User Email
| |-- Shipping Info
| |-- ...
|-- Branding
| |-- ... etc
OrderSource
|-- Orders
| |-- Or
实体房间和预订
房间=房间id,Rtype,占用(位列)
预订=资源id、房间id、签入日期、签出日期
在预订表中预订房间时,如何将“占用位”列更新为1?我认为这是一个触发器。但是如何更新?代码片段,因为我对此不熟悉
有人建议将签出日期设置为空。如果为空,则将占用时间更新为1。
救命
将checkoutdate放在变量上
if checkoutdate == null then
update Room set occupied = 1;
使用静态放置字段(如已占用字段)的问题在于,该值将根据您
升级Postgres 8.4->9.3和Ruby 1.8->2.1后,PL/Ruby无法运行。我在第一次执行任何PL/ruby函数时立即获得Postgres服务器coredump。
我正在分析stacktraces,但看起来不太好。此外,PL/ruby的维护状态看起来也不太好
因此,将焦点转移到我使用PL/ruby解决的实际数据库问题上,并考虑其他选择
问题的简化示例:
将仓库日记账作为具有以下字段的数据库表提供:
日期(日期)
货物类型(外键)
计数(数字)
考虑到仓库是在严格的先进先出模
我正在尝试对Oracle数据库执行查询
我的表格结构是:
d--o一对一
一对多
o--m多对多(通过mtm)
我正在使用以下查询:
SELECT o.id ID, ROWNUM rn /*row 1*/
FROM TABLE_D d
LEFT JOIN TABLE_O o ON d.O_ID=o.ID
RIGHT JOIN TABLE_R r ON r.O_ID = o.ID AND r.TYPE
我有一个存储过程,它接受一个名为@UserCurrency的参数
选择ItemID,
当@UserCurrency=p.ItemCurrency时的情况
p、 项目价格
其他的
当p.ItemPrice=99999999时的情况
p、 项目价格
其他的
p、 ItemPrice*当@UserCurrency='GBP'然后是c.GBP时的情况
当@UserCurrency='USD'时,则为c.USD
当@UserCurrency='EUR'时,则为c.EUR
结束
结束
以价格结束,
来自项目
我有3个表(a、b、c),它们由acc_编号(a.acc_编号、b.acc_编号、c.acc_编号)链接
我试图以一种获得最高行值的方式加入它们:
a.acc_no a.seq_no b.open_dt b.close_dt c.chg_dt
-------- -------- --------- ---------- ----------
100001 500 2016-07-01 2016-07-16 201
我需要在最终结果中列出四列。收入、成本、利润和利润占收入的百分比。我已经从两个不同的表中选择了收入和成本,并将它们内部联接起来,因此如何计算利润(收入减去成本),以及利润占收入的百分比(利润除以收入)。
我假设代码应该是这样的
SELECT
t.revenue,
s.cost,
(SELECT t.revenue minus SELECT s.cost) "profit", (("profit"/t.revenue)*100.00) AS "Q%"
FROM t
INNER JOIN
由于分组顺序不同,以下查询的结果不同。有人能解释一下这种差异的原因吗
谢谢 在内部,当RDBMS评估查询时,它对行进行排序,以便高效地执行group by,然后,由于缺少明确的order by子句,它以该内部顺序发出行
但是,你永远不能依赖这种行为。如果您关心以特定顺序返回行的查询,则必须使用order BY子句指定该顺序。如果不提供order BY子句,则GROUP BY ORDERS通常是查询结果的实际顺序(尽管这可能因RDBMS而异;并行查询可能导致结果无序)
如果需要特定的排序,则添加O
我正在使用Postgres 9.6,并试图建立一个权限模型,允许用户访问他们的项目及其项目“组件。看起来是这样的:
用户
+--------+--------+
| id | uuid |
+--------+--------+
权限
+--------+-----------+--------------+
| id | user_id | project_id |
+--------+-----------+--------------+
项目
+------
我在ms access中有一个表(称为Tweets),看起来像这样
text screenName
lala user1
la user2
lal user3
lalala user1
l user1
a user4
我希望最后有一个表,其中包含每个用户的文本数。对于编号为text的列,我希望它有一个特定的名称(例如newColumn),以及首先按文本数(newColumn)排序的表(降序),然后按屏幕名(升序)
我正在尝试使用SQL创建一个表达式。表达式值正在尝试为一周中的几天指定一个值。星期天从1号到星期六7号。然后我尝试增加5天,如果是星期一,那么它在星期五降落,否则每隔一天增加7天。例如
WeekDay Inlist("2",",") DateAdd(5, "d") OR ds WeekDay Inlist("1,3,4,5,6,7",",") DateAdd(7, "d")
然而,这似乎不起作用?
所以基本上我在数据框中输入日期为2017年3月15日,也就是周三,
我们的表达式会说,如果是星期
是否可以对外部列应用PostgreSQL检查约束?
如果没有如下所示的外部检查约束,也可以获得相同的效果:
create table a (
id serial primary key,
flag boolean,
unique(id, flag)
);
create table b (
id serial primary key,
a_id integer,
yup_true boolean not null default true,
foreign key (
我曾经使用@@ROWCOUNT计算受影响的行数
DECLARE @TotCount INT
DELETE * FROM TabA WHERE A = 'a'
SET @TotCount = @TotCount + @@ROWCOUNT
DELETE * FROM TabB WHERE B = 'b'
SET @TotCount = @TotCount + @@ROWCOUNT
UPDATE TabC SET C = 'c' WHERE C='d'
SET @TotCount = @TotC
我有两个表,我将根据两个表上的复杂的order by子句从第一个表中获得不同的id。我不知道如何使用distinct或groub by,因为它们都阻止在其他列上使用order by
使用distinct的我的代码:
select distinct(shops.id) from shops
left join expiration on shops.id=expiration.shopid
order by
shops.grade desc,
expiration.startdate
我有一些表,如图所示,我想实现上一个表所示的输出。是否可以在不使用SP的情况下使用sql server查询来实现它
BB您可以按照以下给定方式执行此操作。我有一些自由,因为你们之间的关系不是很清楚:
IF OBJECT_ID ('role') IS NOT NULL
DROP TABLE role
GO
CREATE TABLE role
(
roid INT NULL,
roname VARCHAR (20) NULL
)
GO
IF OBJE
我正在尝试在oracle数据库中创建更新查询,但我已尝试解决所有问题,但仍遇到以下问题:
执行节更新查询时发生数据库异常(错误:在“=”位置或附近出现语法错误:66)。有关帮助或意见,请访问schelp.ge.com
UPDATE pgsbizdim.ps_mnd_reqeng_sc_projectsummary
SET (form_doc_id=to_number(:column1, '99999999999'),
logged_date=to_timestamp(:colum
对于postgres,有两种方法可以准备和执行准备好的语句。您可以直接从libpq使用函数和;或者您可以发出SQL语句:PREPARE和EXECUTE。语句名称在两种方法中都是相同的,因此您可以使用PQPrepare来准备语句,然后通过发出execute查询来执行语句(或者使用prepare查询,然后使用PQexecPrepared执行语句)
因此这两种方法(库函数与SQL查询)是等效的。但是,当您使用PQexecPrepared时,pg_stat_activity的query列似乎是带有占位符
根据教科书,Oracle Database 12c是Bob Bryla和Kevin Loney的完整参考,“除了支持WHERE子句和联接,索引还支持ORDER by子句和MAX和MIN函数。”他们后来说,如果选择索引列的最大值或最小值,优化器可以使用索引快速查找该列的最大值或最小值
为了澄清这些引用,我们假设一个名为EMPS的表的salary列上没有索引。如果salary列上有索引,下面的查询会受益吗
select min(salary)
from emps;
select departmen
鉴于以下数据:
DECLARE @Data TABLE
(
clientid INT,
reqyear INT,
status VARCHAR(10)
);
INSERT INTO @Data VALUES
(1, 2017, 'Recd'),
(1, 2018, 'Reject'),
(2, 2017, 'Recd'),
(3, 2017, 'Recd'),
(3, 2018, 'Request'),
(4, 2015, 'Recd'),
(4, 2017, 'Rej
我无法将数据更新回mssql,如果我使用Case When进行查询,它将保存回空白数据,而不是输入的数据。然而,像select*from表这样的普通查询不会有任何问题
我已经将我的datagridview绑定并更新回数据库
Dim adap As New SqlDataAdapter
Dim cmdbl As New SqlCommandBuilder(adap)
adap.Update(dt)
我的桌子结构如下
ID-int
卡式-nvarchar(50)
SQL查询
选择ID,CAS
我有一个SQL server查询
这将返回与OrderID(最终发票)相关/添加到其OrderID的产品的客户订单
这使用了一个exists条件
Select * from Orders o1
where DepartmentSpecialty = 'LivingRoom'
and Exists (SELECT o2.Department FROM Orders o2 WHERE o2.Department = 'Kitchen'
and o1.ID = o2.ID
a
我的SQL Server有问题。我有一个包含机器语句的表,还有一个包含生产数据的表。两个表之间获取相应数据的时间不同。我不知道如何连接这些表。另外,我只需要从表A中筛选代码17
例如:
表a:
Machine Code Time
----------------------------------
EPSX 17 2018-08-28 12:09:32
EPSA 19 2018-08-28 12:09:39
EPSC 17 2018-08-28 11
我写了这段代码,走了这么远,现在我必须解开这张表。我不知道如何嵌套unpivot函数,因为左连接有点让我不舒服 您使用的是哪种数据库管理系统?(SQL Server?)作为总项目计数,@TP89…如果您提供示例数据和所需结果,您的问题会更清楚。最好不要使用数据透视,只需问一个问题即可完成整个转换。
SELECT [Table], Facility_Code,
ISNULL([1],0) AS [1],
ISNULL([2],0) AS [2],
ISNULL([3],0) AS
我正在尝试从配置单元表提取数据并写入本地文件:
每列“日期”值一个输出文件。我的配置单元表将有大约2年以上的数据历史,这意味着我将需要大约700多个不同的输出文件
我目前的知识只允许我每次运行写一个文件,这是我的代码可以在配置单元命令行中运行:
INSERT OVERWRITE LOCAL DIRECTORY '/local/hive/temp'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
select date, col1, col2, col3
标签: Sql
Postgresql
postgresql-performancegenerate-seriesset-returning-functions
在PostgreSQL 11.1中,以下查询需要7分钟以上的时间:
SELECT
'2019-01-19' as date,
'2019-01-19'::date - generate_series(first_observed, last_observed, interval '1 day')::date as days_to_date,
ROUND(AVG(price)) as price,
area_id
FROM
table_example
DBFIDLE示例数据:这4行是在一个表中,还是只有一行?嗨,Littlefoot,上面的示例是一行。当您实际上对字符串中的数据感兴趣时,为什么要将此文本存储为单个字符串值?这似乎没有多大意义。我建议您更改数据模型。完全同意您的意见!不幸的是,虽然这是一项任务,但我被指派提取数据,而不是定义数据结构。这太令人印象深刻了!谢谢我一定会尝试一下。虽然这个解决方案看起来很棒,但我不确定它是否适合我,因为它看起来在查询中使用的值是有限的,不幸的是,到了这个日期,我不确定会有多少条注释条目,因此需要遍历所
我的大多数约束名称都是简洁和简短的,但也有一些是长的,包括单行上的约束名称,超出了我正在使用的代码样式约定
不假思索,我只是做了一个断线和一个双管,因此:
history uint4 constraint "[tablename] The beginning of history must be sooner " ||
我想询问一下调查结果
如何实现此目标?这是您无需分组即可选择值的方法:
select name, case when ket = 'dalam proses' then 1 else 0 end dalam_proses, 'selesai' then 1 else 0 end selesai
from yourtable;
让我们将其用作子查询:
select name, sum(dalam_proses) as dalam_proses, sum(selesai) as selesai
使用
没有输入参数
但是声明的变量很少,大多数是date类型
要插入到包含固定12行数据的临时表中的长2000行查询
启动服务器并首次执行后,大约需要10-12秒。但每次之后,相同的程序需要超过1.5分钟
尝试将与重新编译一起使用选项,但尚未找到此奇怪问题的解决方案。我们至少需要一份通过“将计划粘贴到此处”提供的执行计划副本来帮助您。我投票将此问题作为主题外的问题结束,因为它要求查询优化建议,但是,不包括所涉及对象的DDL,以及它们的索引,以及可消费格式的查询计划(例如使用)。因此,它缺少能够对