我有以下查询,我需要添加一个附加列以指示一组行是否在一个列中包含特定值('PROB)(在一个或多个行中);如果分组中确实包含该值,则输出“ Y”,否则输出“ N”。我添加了一个function
语句,您将在下面的注释中看到它。
我收到错误safe cast
我不确定如何解决此问题,因为我需要根据null
测试此列中是否存在该值。
override fun attachLayoutAnimationParameters(
child: View?,
params: ViewGroup.LayoutParams,
index: Int,
count: Int
) {
if (adapter != null && layoutManager is GridLayoutManager) {
var animationParams =
params.layoutAnimationParameters as? GridLayoutAnimationController.AnimationParameters
if (animationParams == null) {
animationParams = AnimationParameters()
params.layoutAnimationParameters = animationParams
}
val columns = layoutManager.spanCount
animationParams.count = count
animationParams.index = index
animationParams.columnsCount = columns
animationParams.rowsCount = count / columns
val invertedIndex = count - 1 - index
animationParams.column = columns - 1 - invertedIndex % columns
animationParams.row = animationParams.rowsCount - 1 - invertedIndex / columns
} else {
super.attachLayoutAnimationParameters(child, params, index, count)
}
}
编辑:以下是(所需)输出(带有较少列)的简化示例: 如果相同的HRS_PERSON_ID至少有1行带有'PROB',则为该人'Y'做 all 行。如果HRS_PERSON_ID没有任何带有'PROB'的行,则将所有行设为'N'</ p>
答案 0 :(得分:0)
事实证明,这比我想像的要容易,并且不需要Group By
:
CASE WHEN (SELECT top 1 OFFER_COMPONENT
FROM PS_HRS_OFF_DTL_I
WHERE HRS_RCMNT_ID = B.HRS_RCMNT_ID
AND HRS_OFF_ID = B.HRS_OFF_ID
AND OFFER_COMPONENT = 'PROB' )
IS NOT NULL
THEN 'Y'
ELSE 'N' END AS [PROB_CODE]
答案 1 :(得分:-1)
我的评论的解释:
如果此查询:
select i,j
from test
返回此
i j
----------- -----------
1 10
2 10
3 10
4 9
然后,由于某种原因,您可以在MySQL中进行此查询
SELECT j
FROM test
GROUP BY i
但是该查询在MSSQL中失败了(因为它应该这样做!),因为MSSQL无法确定应该为j
返回哪个值。应该是较低,较高还是某个随机值(例如MySQL所做的事情)。
解决方案是编写如下内容:
SELECT MIN(j)
FROM test
GROUP BY i
获取每个组中j的最小值。
或者,如果您确实是clueless
,则可以写:
SELECT 1
FROM test
GROUP BY i
这将为找到的每个组返回值1
。