我想避免在我的代码中进行如下的许多检查:
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
Run Code Online (Sandbox Code Playgroud)
我想我可以让我的查询通过执行以下操作来处理空值:
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
Run Code Online (Sandbox Code Playgroud)
我虽然使用SQLite,但似乎没有认识到这个isnull功能.我也试过其他数据库中的一些公认的那些等效(NVL(),IFNULL()和COALESCE()),但SQLite的似乎不认识任何人.
有没有人有任何建议或知道更好的方法来做到这一点.不幸的是,数据库没有所有字段的默认值.另外,LEFT JOIN在某些情况下我需要使用一些子句,其中返回的某些字段将为null,因为LEFT JOIN表中的匹配记录将不存在.
可能重复:
COUNTIF的SQL等效项()
我可以在COUNT本身中加入某种过滤机制,我不想在查询的WHERE或JOIN中使用它(因为它是大型查询的一部分,其中还有其他列,我不想受到哪里的影响并加入条件).
例如,我可以在SUM中使用case
SUM(CASE WHEN work_status IN ('V','L') THEN shift_total_hours ELSE 0 END),
Run Code Online (Sandbox Code Playgroud)
我也可以在COUNT中执行类似的操作,这样我就可以只计算特定的行数了
这样的事情:
COUNT(CASE WHEN work_status IN ('V','L') THEN <should come in count> ELSE <exclude from count> END)
Run Code Online (Sandbox Code Playgroud)
非常感谢.
我有一张如下表
Type of Station | Broadcast Management
----------------+-------------------------
Full Power | Sinclair Broadcast Group
Full Power | Sinclair Broadcast Group
LPTV cable | Sinclair Broadcast Group
LPTV no cable | Sinclair Broadcast Group
Run Code Online (Sandbox Code Playgroud)
现在我想执行一个查询,结果如下所示
Broadcast Management | Full Power | LPTV cable | LPTV no cable
---------------------------+------------+------------+--------------
Sinclair Broadcast Group | 2 | 1 | 1
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我如何写这个查询
我有以下简单的查询,
SELECT US_LOGON_NAME as Username,
COUNT(I.IS_ISSUE_NO) as Issues
FROM ISSUES I JOIN USERS U ON I.IS_ASSIGNED_USER_ID = U.US_USER_ID
WHERE I.IS_RECEIVED_DATETIME BETWEEN 20110101000000 AND 20110107000000
GROUP BY U.US_LOGON_NAME;
Run Code Online (Sandbox Code Playgroud)
我想在选择列表中添加额外的COUNT()函数,但在某些条件下强加它们.这是以某种方式用CASE()语句完成的吗?我尝试在选择列表中放置Where子句,但似乎不允许这样做.我不确定这里是否真的需要子查询,但我不这么认为.
例如,我想要一个COUNT()函数,它只计算某个范围内的问题,然后计算另一个范围内的问题或其他各种条件等:
SELECT US_LOGON_NAME as Username,
COUNT(I.IS_ISSUE_NO (condition here)
COUNT(I.IS_ISSUE_NO (a different condition here)
Run Code Online (Sandbox Code Playgroud)
等等...
仍按登录名称分组.
谢谢.
我有一个非常简单的问题,会产生错误。示例将清除这一点。
library(odbc)
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(odbc(), "myDSN")
tbl_test <- tibble(ID = c("A", "A", "A", "B", "B", "B"),
val = c(1, 2, 3, 4, 5, 6),
cond = c("H", "H", "A", "A", "A", "H"))
dbWriteTable(con, "tbl_test", tbl_test, overwrite = TRUE)
Run Code Online (Sandbox Code Playgroud)
将简单表写入数据库后,我在 db 中添加到表的链接,并尝试使用正常工作的简单条件总和。但是会遇到错误。
db_tbl <- tbl(con, in_schema("dbo", "tbl_test"))
db_tbl %>%
group_by(ID) %>%
summarise(sum = sum(val, na.rm = TRUE),
count_cond = sum(cond == "H", na.rm=TRUE),
sum_cond = sum(val == "H", na.rm=TRUE))
Error: <SQL> 'SELECT TOP 10 "ID", SUM("val") AS "sum", …Run Code Online (Sandbox Code Playgroud)