1
我正在尝试使用SQL Server将查询语句添加到我的查询中。我有一个非常长的查询,我已经基本选择到一个临时表#Step1给出下表。在SQL Server中选择Case语句
+---+------------+-------------+-----------------+---------------+
| | LOB | TechPrem | Label | Data |
+---+------------+-------------+-----------------+---------------+
| 1 | AOP | Yes | ADjAAL | 40331 |
| 1 | Boiler | Yes | AdjAAL | 0 |
| 1 | TRIA | NO | AdjAAL | 0 |
| 1 | AOP | Yes | PureAAL | 11904 |
| 1 | Boiler | Yes | PureAAL | 775 |
+---+------------+-------------+---------------- +---------------+
我怀疑这里,看着上面的表格,我想选择一个case语句,其中如果“TechPrem”是“是”为AOP &锅炉,那么我的查询1应该执行,否则,如果' TechPrem“为AOP &锅炉为”否“,则应执行查询2。在这个任何建议或想法将是有益的
查询1:
SELECT
FileID,
SUM(CAST(REPLACE(Data,',','.') AS FLOAT)) AS Summed_AAL_Attri
FROM
(SELECT
*,
ROW_NUMBER() OVER (PARTITION BY FileID, "LOB" ORDER BY "Label" ASC) AS rn
FROM
DATA WITH (NOLOCK)
WHERE
Label IN ('AdjAAL')
AND LOB IN ('AOP', 'Boiler', 'TRIA')) AS t
WHERE
t.rn = 1
AND FileID = 1
GROUP BY
FileID
预期的答案,如果 '是':403301
查询2:
SELECT
FileID,
SUM(CAST(REPLACE(Data,',','.') AS FLOAT)) AS Summed_AAL_Attri
FROM
(SELECT
*,
row_number() over (partition by FileID, "LOB" ORDER BY "Label" ASC) as rn
FROM
DATA WITH (NOLOCK)
WHERE
Label IN ('AdjAAL','PureAAL')
AND LOB IN ('AOP', 'Boiler', 'TRIA')) AS t
WHERE
t.rn = 1
AND FileID = 1
GROUP BY
FileID
预期的答案,如果“否':41106
这些ROW_NUMBER函数不会正常工作,因为您在那里有字符串文字。拿出报价。在继续使用NOLOCK丢掉查询之前,您还应该阅读本文。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/至于手头的问题......我不明白你想要什么。而且您的预期输出甚至不匹配您样本中的数据。 –
问题不清楚 – Paparazzi
@Paparazzi也不是我。这个问题是疯狂的! – Caltor