我尝试学习SQL命令并使用查询工作,该查询将列出状态为active (ID = 1)
和active-busy (ID = 2)
的所有客户。
问题是某些客户具有相同的ID,但具有不同的类型。所以我有一个ID为1和Type 3的客户,但是同一个客户也有ID 1但是类型1,所以我试图做的只是选择具有类型1但具有相同ID的那个。因此,如果IF ID相同且Type为1和3,则仅选择Type 3.
SELECT
CASE
WHEN corel.opts LIKE 3
THEN (SELECT corel.opts
WHERE corel.objid = rel.id
AND corel.type IN (1, 2)
AND corel.opts = 3
ELSE corel.opts 1
END)
这不是完整的查询,因为它还有许多我无法发布的内容,但是如果你们有人告诉我如何实现这一目标,我将不胜感激。我只是不知道如何在表格中告诉IF相同的ID但是不同的类型 - 仅选择类型3.每个客户都有不同的ID,但它可以具有相同的类型。
答案 0 :(得分:1)
像这样使用Row_number()
DECLARE @T TABLE
(
Id INT,
TypeNo INT
)
INSERT INTO @T
VALUES(1,1),(1,3),(2,1),(2,3),(3,1),(4,3)
;WITH CTE
AS
(
SELECT
RN = ROW_NUMBER() OVER(PARTITION BY Id ORDER BY TypeNo DESC),
Id,
TypeNo
FROM @T
)
SELECT
Id,
TypeNo
FROM CTE
WHERE RN = 1
我的输入
输出
答案 1 :(得分:1)
测试场景是从Jayasurya Satheesh那里借来的,thx,投票给你了!
DECLARE @T TABLE
(
Id INT,
TypeNo INT
)
INSERT INTO @T
VALUES(1,1),(1,3),(2,1),(2,3),(3,1),(4,3)
- 查询将ROW_NUMBER
与PARTITION BY
一起使用,以分别为每个T.Id
开始行计数。
- SELECT TOP 1 WITH TIES
将所有第一行而不仅仅是第一行:
SELECT TOP 1 WITH TIES
Id,
TypeNo
FROM @T AS T
ORDER BY ROW_NUMBER() OVER(PARTITION BY T.Id ORDER BY T.TypeNo DESC)
如果您的Type=3
不是最高类型的代码,那么简单ORDER BY T.TypeNo DESC
就不够了,但您可以轻松使用CASE
来解决此问题。
答案 2 :(得分:0)
据我了解,您需要以下内容:
K = (np.dot(-0.5,K) * K + 1.5) * K