我想我需要一些指导来了解我的查询中有什么问题。我正在尝试做
Watched_Gladiator=CASE WHEN FilmName IN (CASE WHEN FilmName LIKE '%Gladiator%' THEN 1 END) then OVER(PARTITION BY Cust_Nr) THEN 1 ELSE 0 END
也尝试过这个:
Watched_Gladiator=CASE WHEN FilmName IN (CASE WHEN FilmName LIKE '%Gladiator%' THEN Filmnamne END) then OVER(PARTITION BY Cust_Nr) THEN 1 ELSE 0 END
我目前收到的错误是这样的:
Incorrect syntax near the keyword 'OVER'.
这基本上就是我的数据的样子
Cust_Nr Date FilmName Watched Gladiator
157649306 20150430 Gladiator 1
158470722 20150504 Nick Cave: 20,000 Days On Earth 0
158467945 20150504 Out Of The Furnace 0
158470531 20150504 FilmA 0
157649306 20150510 Gladiator 1
158470722 20150515 Gladiator 1
我想创建一个列(1 或零)来显示客户是否观看过《角斗士》,然后显示 1 ELSE 0。我该怎么做?
我创建了一个测试列,尝试使用简单的 LIKE '%Gladiator%' THEN 1 ELSE 0。此解决方案的问题是,如果客户观看了多次,它将多次显示 1(一)。我只需要 1 或零。
我觉得我已经非常接近找到解决方案了。我对使用 OVER() 和 CASE WHEN 很陌生,但很享受这种刺激:=)
所以你是说:
SELECT Cust_Nr, Date, FilmName,
CASE WHEN FilmName LIKE '%Gladiator%' THEN 1 ELSE 0 END as WatchedGladiator
FROM YourTable
WHERE YourColumn = @somevalue
不起作用?因为根据你给出的数据,应该是这样。
EDIT:
根据蒂姆的评论,我只需将这一点添加到查询中即可。
SELECT Cust_Nr, Date, FilmName, WatchedGladiator
FROM
(
SELECT Cust_Nr, Date, FilmName,
CASE WHEN FilmName LIKE '%Gladiator%' THEN 1 ELSE 0 END as WatchedGladiator
FROM YourTable
WHERE YourColumn = @somevalue
) as wg
WHERE WatchedGladiator = 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)