我正在尝试确定MSSQL 2008中的最佳方法.
这是我的示例数据
TransDate Id Active
-------------------------
1/18 1pm 5 1
1/18 2pm 5 0
1/18 3pm 5 Null
1/18 4pm 5 1
1/18 5pm 5 0
1/18 6pm 5 Null
Run Code Online (Sandbox Code Playgroud)
如果按Id分组并由TransDate排序,我想要活动列的最后一个非空值和TransDate的MAX
SELECT MAX(TransDate) AS TransDate,
Id,
--LASTNonNull(Active) AS Active
Run Code Online (Sandbox Code Playgroud)
结果如下:
TransDate Id Active
---------------------
1/18 6pm 5 0
Run Code Online (Sandbox Code Playgroud)
它就像一个Coalesce但是在行上,而不是两个值/列.
还有许多其他列也会应用这种类似的方法,所以我真的不想为每个列进行单独的连接.
有任何想法吗?
我有这样的查询:
DECLARE @razem VARCHAR(MAX);
SELECT Ordering.orderID ,
Document.number,
(User_info.name +' '+ User_info.surname),
Ordering.dateStart,
Ordering.dateEnd ,
(
select COALESCE(' ',@razem)+sell_type.name as r
from Ordering_sell_type, Sell_type
where orderID = Ordering.orderID and
Ordering_sell_type.sell_typeID = sell_type.sell_typeID
) podz
FROM Ordering, User_info, Product_Document, Document, Document_type
WHERE Ordering.orderID = Product_document.orderID
AND Document.documentID = Document_type.documentID
AND Document.documentID = Product_document.documentID
AND Ordering.userID = User_info.userID
AND Ordering.isClosed = 1 AND Document_type.typeID = 1
GROUP BY Document.isitfiscal, Document.refDocID,
Document.number, Ordering.orderID, User_info.name,
User_info.surname, Ordering.dateStart,
Ordering.dateEnd , Ordering.isCLosed
ORDER BY Ordering.dateEnd
Run Code Online (Sandbox Code Playgroud)
在COALESCE函数中,我想获得所选订单的所有付款类型 …
我name1用Spring + Hibernate 编写了一个postgresql并从我的java代码中传递参数.
SELECT * FROM Test
WHERE name = COALESCE(:name1, name2)
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个错误
ERROR: COALESCE types bytea and character varying
Run Code Online (Sandbox Code Playgroud)
name1我的java代码中的String 类型.
我试图解决这个问题
COALESCE(convert_from(:name1,'UTF8'), name2)
Run Code Online (Sandbox Code Playgroud)
它将在Eclipse中通过JUNIT Test.但是,当我在Tomcat上运行它时,我会收到错误
Error:convert_from(character varying, unknown) not exist
Run Code Online (Sandbox Code Playgroud)
怎么解决?谢谢.
我正在从函数构建小JSON块,我需要过滤空值,同时引用像这样的非空值(MySQL 5.0,所以没有内置的JSON函数):
COALESCE(CONCAT('[',
group_concat(
CONCAT('{ "key": "', REPLACE(a.val, '"', '\\"'), '"}')
SEPARATOR ', ')
, ']'), 'null') AS jsonval
Run Code Online (Sandbox Code Playgroud)
输出类似这样的东西(这是一个嵌入完整JSON块的值):
[{"key": "foo"}, {"key": "bar"}, {"key": "baz"}]null[{"key": ""}]对于每个a.val我想在我的列表中添加一个条目,但null如果没有找到值,则使用字符串而不是完整列表.它工作得很好,但我需要NULL在结果JSON中处理空字符串以及值为null.
REPLACE(),CONCAT()并且COALESCE()对于空值一起工作得非常好,但是没有检测到空字符串,我如何以相同的方式处理NULL和空字符串?
我已经看到了关于条带化空值的这个问题,我正在寻找相反的问题.
我试图将个人的名字和姓氏连接在一起,但在存在空值时合并团队名称。不幸的是,我的语法返回一个空格,因此合并不会将其识别为空值。我可以做什么来纠正这个问题?
我目前使用的语法:
coalesce((Concat(first_name,' ',last_name)),team_name)
Run Code Online (Sandbox Code Playgroud) 我有一个带有A字段的 PySpark 数据框,几个B依赖于A( A->B) 的C字段和我想按每个 A 聚合的字段。例如:
A | B | C
----------
A | 1 | 6
A | 1 | 7
B | 2 | 8
B | 2 | 4
Run Code Online (Sandbox Code Playgroud)
我希望按 分组A,呈现任何一个B并在 上运行聚合(比方说SUM)C。
预期的结果是:
A | B | C
----------
A | 1 | 13
B | 2 | 12
Run Code Online (Sandbox Code Playgroud)
SQL明智我会这样做:
SELECT A, COALESCE(B) as B, SUM(C) as C
FROM …Run Code Online (Sandbox Code Playgroud) 我试图创建一个新的运算符:?在列表上,其操作与::相同,但如果值为null,则返回原始列表.我写了以下内容,但很快就知道我不知道自己在做什么......
object ImplicitList {
implicit def extendIterator[T](i : List[T]) = new ListExtension(i)
}
class ListExtension[T <: Any](i : List[T]) {
def :?[B >: T] (x: B): List[B] = if (x != null) x :: i else i
}
final case class :?[B](private val hd: B, private val tl: ListExtension[B]) extends ListExtension[B](tl.:?(hd))
Run Code Online (Sandbox Code Playgroud) 我正在使用SQL Server和TSQL:
我想要做的是在另一列上使用group by时在一列上使用逗号分隔值.见下面的数据示例.
col1 --- col2 1121 abc 1123 aee 1335 afg 1121 def 1121 abc
我想在"col1"上分组并计算记录数,但如果数据不同,我还想在col2上连接.例如,使用值"1121"作为参考,请参阅下面的数据输出.
qty --- col1 --- col2 3 1121 abc, def 1 1123 aee 1 1335 afg
我想过可能使用COALESCE,但我不确定如何在另一列上使用group by时实现它.
任何帮助将不胜感激.
我不能在SO中找到它,并认为它可能值得在此找到它,因为oracle文档没有指定它.
http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions023.htm
假设我有几个线程,他们访问地址A + 0,A + 4,A + 8,A + 12(每个访问=下一个线程)的内存.这种访问是合并的,对吗?
但是,如果我以相反的顺序访问相同的内存,则意味着:
thread 0 -> A+12
thread 1 -> A+8
thread 2 -> A+4
thread 3 -> A+0
Run Code Online (Sandbox Code Playgroud)
这里的合并也会触发吗?