我正在尝试编写一个select语句,它将选择一些字段,包括一个电子邮件字段.此表中有3个电子邮件字段,有时可以包含空值.我想看看3个领域; [电子邮件地址1],[电子邮件地址2],[电子邮件地址3]基本上我想做的是,如果[电子邮件地址3]为空,那么我想要[电子邮件地址2]中的值,如果电子邮件地址2为空,而不是我想要的值在[电子邮件地址1]
我似乎无法使语法正确,我不太确定我做错了什么.
我需要加入两个表.如果b列为空,则将在c列上完成连接.如果不是,则联接将在b列上.
这是我需要的.但是我怀疑我错过了一些东西,因为它看起来有点令人费解:
select *
from the_table t
inner join another_table a
on
case when a.b = '' then
case when t.c = a.c then 1 else 0 end
else
case when t.b = a.b then 1 else 0 end
end = 1
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我正在使用TSQL从数据库中选择数据.我想选择表中的所有数据但是如果id是重复的,则添加(sum)所有具有相同ID的列'a'并使其仅为1行.
输出中应该没有重复的ID.
SELECT DISTINCT id,a,b FROM dbo.test WHERE
id not in (select id from dbo.test) CASE a WHEN a + a??
Run Code Online (Sandbox Code Playgroud)
例:
dbo.test
========
id a
1 4
1 5
2 3
3 2
output:
1 9 <-- two ids of 1 so column 'a' is added together.
2 3
3 2
Run Code Online (Sandbox Code Playgroud) 我不得不对一堆存储过程进行微调,并得到一个存储过程中有一些存储过程的IF ELSE blocks插入语句.因此,我使用case建模他们发现我得到语法错误尝试下面的语句(一个简单的例子,正在做什么)但确定你会得到这个想法
DECLARE @rowcount int
SELECT @rowcount = -1
CASE WHEN @rowcount = -1 THEN
select 'I WON THE RACE'
WHEN '2'
SELECT 'WHAT A LOSER'
END
Run Code Online (Sandbox Code Playgroud)
每个案例都有不止一个陈述,所以我只是将它们包含在内部(,)但是要进入noavail.请更正我对TSQL案例的了解.(如果有帮助,使用SQl Server 2005)
public LabelsFactoryImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public EObject create(EClass eClass) {
switch (eClass.getClassifierID()) {
case LabelsPackage.AREA_LABEL: return createAreaLabel();
case LabelsPackage.AREA_LABEL_VALUE: return createAreaLabelValue();
case LabelsPackage.COMMON_BORDER_RELATIONSHIP_LABEL: return createCommonBorderRelationshipLabel();
case LabelsPackage.COMMON_BORDER_RELATIONSHIP_LABEL_VALUE: return createCommonBorderRelationshipLabelValue();
case LabelsPackage.POPULATION_LABEL: return createPopulationLabel();
case LabelsPackage.POPULATION_LABEL_VALUE: return createPopulationLabelValue();
case LabelsPackage.RELATIVE_PHYSICAL_RELATIONSHIP_LABEL: return createRelativePhysicalRelationshipLabel();
case LabelsPackage.RELATIVE_PHYSICAL_RELATIONSHIP_LABEL_VALUE: return createRelativePhysicalRelationshipLabelValue();
case LabelsPackage.TRANSPORT_RELATIONSHIP_LABEL: return createTransportRelationshipLabel();
case LabelsPackage.TRANSPORT_RELATIONSHIP_LABEL_VALUE: return createTransportRelationshipLabelValue();
case LabelsPackage.PHYSICAL_RELATIONSHIP_LABEL_VALUE: return createPhysicalRelationshipLabelValue();
case LabelsPackage.ROAD_TRANSPORT_RELATIONSHIP_LABEL: return createRoadTransportRelationshipLabel();
case LabelsPackage.ROAD_TRANSPORT_RELATIONSHIP_LABEL_VALUE: return createRoadTransportRelationshipLabelValue();
case LabelsPackage.EARTH_SCIENCE_LABEL: …Run Code Online (Sandbox Code Playgroud) 我必须做一个软件来识别C中的令牌。我有以下代码:
*main = do
x <- readFile "progc.c"
let resultado = lexCmm X
print resultado
lexCmm :: String -> [Tok]
lexCmm X = case X of
c:cs | isSpace c -> lexCmm cs
c:cs | isAlpha c -> getId s
c:cs | isDigit c -> getInt s
c:d:cs | isSymb [c,d] -> TS [c,d] : lexCmm cs
c:cs | isSymb [c] -> TS [c] : lexCmm cs
_ -> []
where
getId s = lx i : lexCmm cs where …Run Code Online (Sandbox Code Playgroud) 这是我的第一个代码
maybe_devide :: Maybe Integer -> Maybe Integer -> Maybe Integer
maybe_devide maybeX maybeY = case (maybeX, maybeY) of
(Just x, Just y)
|x/=0 && y/=0 -> Just (div x y)
|x==0 && y/=0 -> Just 0
|x/=0 && y==0 -> Nothing
(Nothing, Just y) -> Nothing
(Just x, Nothing) -> Nothing
Run Code Online (Sandbox Code Playgroud)
代码1的错误消息如下所示:
[1 of 1] Compiling Main ( test2.hs, interpreted )
test2.hs:1:246: parse error on input `->'
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)
这是我的朋友Bryan Olivier写的第二个代码:
maybe_devide :: Maybe Integer -> Maybe …Run Code Online (Sandbox Code Playgroud) 我有一个String变量,每次运行时都可以有不同的长度.有了它,我会检查它的开头,例如:
public void defineLocation(){
if (newLocation.substring(0,2).equals("DO") || newLocation.substring(0,2).equals("30") || newLocation.substring(0,2).equals("21")) {
locationInDc = "DOOR";
} else if (newLocation.substring(0,2).equals("VT") || newLocation.substring(0,3).equals("MUF")) {
locationInDc = "BLOUBLOU";
} else if (newLocation.substring(0,3).equals("MAH")) {
locationInDc = "BLOBLO";
} else if (newLocation.substring(0,7).equals("Zone 72") || newLocation.substring(0,7).equals("Zone 70")){
locationInDc = "BLOFBLOF";
}
Run Code Online (Sandbox Code Playgroud)
我知道这不是最有效的方式,它必然会破坏,如果我的变量不在前3个检查中的任何一个但仍然具有比7更少的字符,那么它将抛出错误.
有没有更"正确"的方法来做到这一点?我应该首先检查字符串包含多少个字符,然后将其指向正确的检查/"ifs"?谢谢.
我想沿着这条线做一个SELECT
CASE
WHEN Status = 'Live'
THEN
WHEN BookingDate = LastModifiedDateTime
THEN
'New'
ELSE
'Modified'
ELSE
Status
END AS s
Run Code Online (Sandbox Code Playgroud)
我遇到了第二个问题 WHEN
关键字"WHEN"附近的语法不正确.
我不确定如何解决这个问题?
我有一个样本表,其中包含帮助台呼叫中心数据.在此表中存储了呼叫日志和相关内容.该表有call_no一date_logged列和一列.
我试图使用一个案例,我可以获得给定时间段内的总呼叫数.
下面是示例代码.
SELECT
COUNT(CASE WHEN CALLS.DATE_LOGGED BETWEEN '2018/04/06' AND '2018/04/07'
THEN calls.CALL_NO END) AS "CALLS LOGGED YESTERDAY"
FROM
LOGGED_CALLS CALLS
Run Code Online (Sandbox Code Playgroud)
这给了我系统中的调用总数,我不想在这种情况之外使用where子句.
让我们假设它再次是4月7日,我希望从前一天开始记录呼叫