请考虑我的表(这只是一个简化版本,在我的项目中,我有600,000多条记录):
Id TransactionId TransactionTypeId Description
1 1 1 Description1
2 1 1 Description2
3 1 2 Description3
4 1 2 Description4
5 1 1 Description5
6 1 2 Description6
7 2 1 Description7
8 2 1 Description8
9 2 2 Description9
10 2 2 Description10
Run Code Online (Sandbox Code Playgroud)
我需要做的是什么时候TransactionTypeId = 1,我需要从该表中获取最新数据.否则,什么时候TransactionTypeId <> 1,我需要得到它们.
对于这个例子,我有这个查询:
SELECT MAX(T.Id)
, SUBSTRING_INDEX(GROUP_CONCAT(T.TransactionId ORDER BY T.Id DESC), ',', 1) AS TransactionId
, SUBSTRING_INDEX(GROUP_CONCAT(T.TransactionTypeId ORDER BY T.Id DESC), ',', 1) AS TransactionTypeId
, SUBSTRING_INDEX(GROUP_CONCAT(T.Description ORDER …Run Code Online (Sandbox Code Playgroud) 我在我写的查询中有一个列,如下所示.
**RCPT_DATE**
NULL
2017-01-09 00:00:00.000
NULL
NULL
1900-01-01 00:00:00.000
1900-01-01 00:00:00.000
1900-01-01 00:00:00.000
2016-09-05 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
我想要做的是摆脱NULL值并显示'不可用'并显示'No Rcpt'而不是'1900-01-01 00:00:00.000'值,使其看起来更干净.
我试过下面但它没有做任何事情
CASE c.RCPT_DATE
WHEN '1900-01-01 00:00:00.000' THEN ''
WHEN NULL Then 'xxx'
ELSE c.RCPT_DATE
END AS RCPT_DATE,
Run Code Online (Sandbox Code Playgroud)
我试过了,
CASE c.RCPT_DATE
WHEN '1900-01-01 00:00:00.000' THEN NULL
Run Code Online (Sandbox Code Playgroud)
这打印NULL而不是'1900-01-01 00:00:00.000'值,但这不是我想要的.
任何帮助赞赏
谢谢
如果周数小于 10,我尝试在周数中添加前导零。两种 col 类型都是smallint,并且我尝试了以下代码,但它没有产生我想要的结果。我得到的结果:“20201”与我想要的“202001”。
SELECT CONCAT(CAST(yr_num AS VARCHAR), CASE WHEN CAST(wk_num AS VARCHAR) < 10 THEN '0' + wk_num ELSE wk_num END) as year_wk FROM sometable
Run Code Online (Sandbox Code Playgroud)
我正在使用 redshift 进行此查询。
与许多其他编程语言一样,Kotlin 提供了isNullOrEmpty等检查,它允许简单地检查myString.isNullOrEmpty().
有没有办法将这样的检查与when 表达式结合起来?默认情况下,表达式仅允许显式字符串。这样的事情可能吗?:
when (myString) {
"1" -> print("1")
"2" -> print("1")
myString.isNullOrEmpty() -> print("null or empty") //This is what I am looking for
else -> print("None of them")
}
Run Code Online (Sandbox Code Playgroud) 我想CASE WHEN在以下工作语句中添加一个:
Select ...
From...
Where
d.name like @filter and d.flags & 0x0F <> 0
Run Code Online (Sandbox Code Playgroud)
我有一种情况,如果用户将BIT @showHidden参数设置为true ,我希望过滤.这是我尝试过的:
SELECT...
FROM...
WHERE
d.name like
CASE WHEN @showHidden = 'true' THEN
@filter
ELSE
@filter and d.flags & 0x0F <> 0
Run Code Online (Sandbox Code Playgroud)
我收到错误:
'和'附近的语法不正确.
是否有可能AND在一个CASE WHEN?
我试图00001在查询结果为空但查询仍然返回空时显示。我不知道我的查询有什么问题。
编辑:
假设OBRNo是123-5678-10-13-1619手段LEN(a.OBRNo) is 19
SELECT TOP 1 CASE WHEN RIGHT(a.OBRNo, 5) = NULL THEN '00001' ELSE a.OBRNo
END as CaseWhen,
ISNULL(a.OBRNo, '00001') as ISNULL,
RIGHT(OBRNo, 5) as OrderBy
FROM tbl_T_BMSCurrentControl as a
WHERE LEN(a.OBRNo) = 20 and a.ActionCode = 1
ORDER BY OrderBy DESC
Run Code Online (Sandbox Code Playgroud)
我试图做一个“用”来遍历一些数据(这样做很好)。但是之后,我想返回依赖于bit参数的数据。重要的是这在函数内部。下面基本上是我的代码在做什么。
WITH StuffChain
AS (
//initial
union all
//more
)
Run Code Online (Sandbox Code Playgroud)
之后,我正在尝试做类似的事情
CASE WHEN @MyParamVal = 1 THEN
SELECT TOP (1) * FROM StuffChain
ELSE
SELECT * FROM StuffChain
END
RETURN
Run Code Online (Sandbox Code Playgroud)
SQL不是我的强项,我仍然在学习抱歉。我也不确定是否使用内联或多语句功能
编辑:当我给案件时,我用它来解释我要返回的东西,不一定是我将要使用的东西。我用它来描述我所需要的东西,只要知道的话就知道一点。
我有 3 名患者的重复测量(4 或 5 次)的长格式数据:
library(dplyr)
library(magrittr)
questiondata <- structure(list(ID = c(2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4,
4), time = c("time1", "time2", "time3", "time4", "time1", "time2",
"time3", "time4", "time5", "time1", "time2", "time3", "time4",
"time5"), drug_use = structure(c(NA, 1L, NA, NA, NA, 2L, NA,
NA, NA, NA, 1L, NA, NA, NA), .Label = c("no", "yes"), class = "factor")), row.names = c(NA,
-14L), class = c("tbl_df", "tbl", "data.frame"))
# Corresponding to the following tibble: …Run Code Online (Sandbox Code Playgroud)