我想在桌子上选择多行。但我也希望每一行都选择字段。这是样本表:
---------------------
OrNo | Name | value
---------------------
1154 | Michael | 41
1154 | Rico | 24
1487 | Alex | 21
1487 | Leo | 27
我想选择哪里" Orno"表中的代码是多个。所以我希望在" OrNO"中得到每个名字和价值。 例如,我想选择OrNO 1154的位置。如何从该代码中选择所有名称和值?如何用sql数据读取器读取它们?
编辑:
基于回答,对不起,我想在后面的代码上执行,比如使用C#/ VB.Net的sqldatareader。我不知道如何在代码后面执行它们以存储到varriable。
谢谢
答案 0 :(得分:0)
SELECT *
FROM MyTable
WHERE OrNo IN
(
SELECT OrNo
FROM
(
SELECT OrNo, COUNT(*) AS RecordCount
FROM MyTable
GROUP BY OrNo
) A
WHERE RecordCount > 1
)
答案 1 :(得分:0)
很难理解你的问题。 你在搜索SQL语句吗?如果是这样,我会建议:
SELECT *
FROM <TABLE_NAME>
WHERE OrNo IN
(
SELECT OrNo
FROM <TABLE_NAME>
GROUP BY OrNo
HAVING COUNT(*) > 1
)
对不起,@ jmcilhinney在这里更快。
答案 2 :(得分:0)
您希望每个OrNo返回重复记录,因此按OrNo计数并仅返回带有&gt;的记录1。
select orno, name, value
from
(
select orno, name, value, count(*) over (partition by orno) as cnt
from mytable
)
where cnt > 1
order by orno;
答案 3 :(得分:0)
还有一个,有关系
with t as (
select * from (values
(1154,'Michael',41),
(1154,'Rico',24),
(1199,'Mary',25),
(1487,'Alex',21),
(1487,'Leo',27)) t(OrNo, Name, value )
)
select top(1) with ties OrNo, Name, value
from t
order by
case count(*) over (partition by OrNo ) when 1 then 1 else 0 end