我的SELECT
声明运行得很慢,它阻碍了我们的夜间进程.
查询是:(请不要评论隐式连接语法,这是由运行此代码的Informatica自动生成的):
SELECT *
FROM STG_DIM_CRM_CASES,V_CRM_CASE_ID_EXISTS_IN_DWH,stg_scd_customers_key
WHERE STG_DIM_CRM_CASES.CRM_CASE_ID = V_CRM_CASE_ID_EXISTS_IN_DWH.CASE_ID(+)
AND STG_DIM_CRM_CASES.account_number = stg_scd_customers_key.account_number(+)
and STG_DIM_CRM_CASES.Case_Create_Date between stg_scd_customers_key.start_date(+) and stg_scd_customers_key.end_date(+)
Run Code Online (Sandbox Code Playgroud)
编辑:实际查询仅选择account_number,start_date,end_date
另一个未编制索引的列.
表格信息:
STG_DIM_CRM_CASES
Index - (Account_Number,Case_Create_Date)
size - 270k records.
Run Code Online (Sandbox Code Playgroud)
stg_scd_customers_key
Index - Account_Number,Start_Date,End_Date
Partitioned - End_Date
Size - 500 million records.
Run Code Online (Sandbox Code Playgroud)
V_CRM_CASE_ID_EXISTS_IN_DWH(查看) -
select t.case_id
from crm_ps_rc_case t, dim_crm_cases x
where t.case_id=x.crm_case_id;
Run Code Online (Sandbox Code Playgroud)
dim_crm_cases -
Indexed - (crm_case_id)
Size - 100 million .
Run Code Online (Sandbox Code Playgroud)
crm_ps_rc_case -
Size - 270k records
Run Code Online (Sandbox Code Playgroud)
编辑 - 如果不清楚,视图将返回270k记录.
没有连接的查询stg_scd
需要几秒钟,看起来它是导致性能问题的部分,视图也会以秒为单位运行,尽管它正在加入到1亿个记录表中.现在,查询占用的时间在12到30分钟之间,取决于我们的来源有多繁忙. …
我有以下查询:
SELECT * FROM `Contacts`
WHERE `Zona` = '1'
AND `Responsable` = '9'
AND `AllowComercialVisit` = 'Call_Again'
-- the problem are OR's --
OR `AllowComercialVisit` = 'Busy'
OR `AllowComercialVisit` = 'Not_answered'
-- the problem are OR's --
AND `DateRecall` <= '2016-06-20 13:04:52'
AND `DateRecall` >= '2016-06-20 12:39:52'
ORDER BY `DateRecall` ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)
问题是查询应该只显示第一个和第二个'DateRecall'之间的行,但是返回所有带有'Call_Again','Busy'和'Not_answered'的行而不过滤日期.
任何解决方案将不胜感激!
我正在我的 React Native 应用程序中实现与 expo 的深度链接。我已经成功地使用此代码和本教程以及本文档来将其调整为我的嵌套堆栈:
const linking = {
prefixes:[prefix],
config: {
screens: {
Drawer: {
screens: {
Tabs: {
screens: {
Profile:"profile"
}
}
}
},
}
}
}
return (
<NavigationContainer linking={linking}>
<RootStackScreen actions={actions} showLoader={showLoader} user={user} {...props} />
</NavigationContainer>
)
Run Code Online (Sandbox Code Playgroud)
}
如果我使用myscheme://profile
它,它会按预期工作,但前提是该应用程序在后台打开。当应用程序关闭时,它只是在我的初始主屏幕中打开它,我尝试谷歌搜索和搜索,但找不到任何适合我所做的解释。我还尝试添加getInitialRoute
该功能linking
,该功能在应用程序关闭并从深层链接打开时触发,但无法弄清楚如何使用它来激活导航。
async getInitialURL() {
const url = await Linking.getInitialURL(); // This returns the link that was used to open the app
if (url != null) { …
Run Code Online (Sandbox Code Playgroud) 嗨,我有如下查询:
SELECT route_id [ROUTE_ID]
FROM route_master(NOLOCK)
WHERE route_ou = 2
AND route_query = @l_s_query
AND lang_id = 1
Run Code Online (Sandbox Code Playgroud)
这里,只有当@l_s_query为非空时,才应添加WHERE子句中的"AND route_query = @l_s_query"条件.我不想为@l_s_query写IF IFSE条件.有没有办法直接处理WHERE子句本身.谢谢.
我有一个包含审计相关记录的表.有一列存储批准状态,其值为"N"和"Y".我必须找到最近从批准状态'Y'更改为'N'的记录.
样本数据:
Request_No approve_status request_create_date audit_no_in
22866 N 2016-06-21 11:47:12.7530000 1016
22866 N 2016-06-21 11:46:52.3660000 1015
22866 Y 2016-06-21 11:46:13.9290000 1014
22866 Y 2016-06-21 11:45:14.3200000 1013
22866 N 2016-06-21 11:37:27.9410000 1012
22866 Y 2016-06-21 11:37:03.4510000 1011
22866 N 2016-06-21 11:32:29.6310000 1010
22866 Y 2016-06-21 11:31:41.0270000 1009
22866 N 2016-06-20 19:17:30.4820000 1008
22866 N 2016-06-20 19:14:30.4720000 1007
22866 Y 2016-06-02 13:12:53.5170000 1006
Run Code Online (Sandbox Code Playgroud)
所需输出:
Request_No approve_status request_create_date audit_no_in
22866 N 2016-06-21 11:46:52.3660000 1015
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
分离字符串列表并用mysql中的新值替换相同的列表我在table_1中有以下数据表table_1(当前保存的结构)
code value
12_A ["A","B","C","D"]
12_B ["E","F","G","H"]
12_3 ["I","J","K","L"]
Run Code Online (Sandbox Code Playgroud)
但每个代码都有不同的值和不同的描述.喜欢::
code value description
12_A A Apple
12_A B Ball
12_A C Cat
12_A D Dog
12_B E Eagle
12_B F Flag
. . .
. . .
. . .
Run Code Online (Sandbox Code Playgroud)
我必须从table_1中分离值列表,并需要再次保存在同一个表中,即table_1(在此结构中)::
code value
12_A ["Apple","Ball","Cat","Dog"]
12_B ["Eagle","Flag",.......]
12_3 [......................]
Run Code Online (Sandbox Code Playgroud) 请帮我解决这个问题,因为我尝试了这个论坛的所有内容,但仍未找到解决方案.
好吧,我有两张桌子:
我想更改表格价格中两个字段的值.我会给那些具体的价值观.
这些领域是:
但我想仅为ID为31的制造商更改字段.
所以,我首先检查INNER JOIN是否正常工作.
SELECT manufacturers.manufacturer_id,
prices.product_id,
prices.product_price,
prices.override,
prices.product_discount_id
FROM manufacturers
INNER prices
ON manufacturers.product_id=prices.product_id
AND manufacturers.manufacturer_id=31;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试更新这两个字段时,我不知道如何做到这一点.例如,我试过这个,但它不起作用:
UPDATE prices
SET prices.override=1
FROM
INNER JOIN prices
ON manufacturers.product_id=prices.product_id
AND manufacturers.manufacturer_id=31;
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
UPDATE prices
SET prices.override=1,
INNER JOIN manufacturers
ON prices.virtuemart_product_id = manufacturers.virtuemart_product_id
AND manufacturers.manufacturer_id=31;
Run Code Online (Sandbox Code Playgroud)
我做错了什么?通常我收到的错误消息是:
#1064 - 您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在第3行的'FROM jos_virtuemart_product_prices价格INNER JOIN jos_virtuemart_product_man'附近使用正确的语法
我读了别名的东西,但仍然没有结果.
任何帮助,将不胜感激!
我有一张表,其中一些行有一些空白cells
.我尝试使用IS NULL函数选择这样的行.但查询选择0行.
select * from zzz_fkp_registration_female where fname is null;
(0 row(s) affected)
Run Code Online (Sandbox Code Playgroud)
现在我将查询更改为:
select * from zzz_fkp_registration_female where fname is null or fname ='';
Run Code Online (Sandbox Code Playgroud)
我得到了理想的结果.
为什么IS NULL没有给出结果?是什么区别IS NULL
,并''
由于细胞是空的.请解释.
我正在尝试使用简单的动作(+ - /*)来实现Dijkstra算法 Shunting-yard
来读取数学方程式.它基本上得到一个"中缀"字符串,并将其转换为"后缀"字符串.
EG:输入 - > "(3+5)*4-12"
.输出:Queue[3,5,+,4, *,12,-]
从右到左阅读时,您会发现需要从4的乘法中减去12乘以3和5.
我做得对了.我认为将队列解释为计算的最简单方法是使用递归,所以我想出了以下代码:
public static Expression newCalc(ArrayDeque<String> q)//q is the output of Shunting yard algo
{
String tmp =q.pollLast();
if(tmp.equals("*") || tmp.equals("/") || tmp.equals("+") || tmp.equals("-")) {
Expression rightOperation = newCalc(q);
Expression leftOperation = newCalc(q);
if(tmp.equals("+"))
return new Plus(leftOperation,rightOperation);
else if(tmp.equals("-"))
return new Minus(leftOperation,rightOperation);
else if(tmp.equals("*"))
return new Mul(leftOperation,rightOperation);
else if(tmp.equals("/"))
return new Div(leftOperation,rightOperation);
else
return new Number(0);
}
else
return new Number(Double.parseDouble(tmp));
}
Run Code Online (Sandbox Code Playgroud)
它适用于几乎所有字符串,除了以下字符串:
"(3+5)*4-12+1"
Run Code Online (Sandbox Code Playgroud)
在调车码后,队列输出为: [3,5,+,4, …
好的,4个小时的编码,只有6个小时的搜索......我并没有比开始时更好.这是我的问题.我有一个表(tmpShell),它有12列.它是一个没有约束的基本表 - 用于临时报告.当我们插入数据时,我必须提取一个ID号(PatientId)和所有列NAMES,其中该PatientId的值为null.
例:
PatientId Fname Lname DOB 123455 Sam NULL NULL
2345455 NULL Doe 1/1/1980
09172349 John Jone NULL
我想要回归的是:
PatientId ErrorMsg 123455 Lname,DOB
2345455 Fname
09172349 DOB
当然,如果所有列都有值,则errormsg将为null.
我已尝试并失败了大约300个不同的代码片段,但这似乎是我能得到的最接近的代码.不幸的是,这只返回每一列,而不是空值.
ALTER PROC [sp_aaShowAllNullColumns]
@tableName VARCHAR(255)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(4000);
DECLARE @cols NVARCHAR(4000);
DECLARE @tcols TABLE ( [colbit] NVARCHAR(255) );
--DECLARE @tablename VARCHAR(255) = 'tmpShell';
INSERT @tcols
SELECT
'count(' + [columns].[name] + ') as ' + [columns].[name] + ', ' AS [colbit]
FROM
[sys].[columns]
WHERE
[columns].[object_id] = OBJECT_ID(@tableName);
SELECT
@cols = COALESCE(@cols, ', ', '') + …
Run Code Online (Sandbox Code Playgroud) sql ×8
sql-server ×4
mysql ×3
null ×2
algorithm ×1
alias ×1
cells ×1
date ×1
deep-linking ×1
expo ×1
java ×1
join ×1
list ×1
loops ×1
navigation ×1
optimization ×1
oracle ×1
performance ×1
react-native ×1
recursion ×1
select ×1
sql-update ×1
t-sql ×1
view ×1