我想在一個SQL選擇來獲取一個整數值,但只有當數據發生變化,如:SQL選擇當數據變化
表數據:
50 50 50 52 50 30 30 35 30 30 60 65 60 60
現在,我想得到這樣的數據:
50 52 50 30 35 30 60 65 60
執行一個不同的查詢,這不會爲我工作,因爲它會檢索:
50 52 30 35 60 65
任何想法?
我正在使用實體框架和C#,所以建議使用它們也將不勝感激!
謝謝。
我想在一個SQL選擇來獲取一個整數值,但只有當數據發生變化,如:SQL選擇當數據變化
表數據:
50 50 50 52 50 30 30 35 30 30 60 65 60 60
現在,我想得到這樣的數據:
50 52 50 30 35 30 60 65 60
執行一個不同的查詢,這不會爲我工作,因爲它會檢索:
50 52 30 35 60 65
任何想法?
我正在使用實體框架和C#,所以建議使用它們也將不勝感激!
謝謝。
List<int> list=...;
var result=Enumerable.Range(0, list.Count- 1)
.Where(x=> x== list.Count-1 || list[x]!=list[x+1])
.Select(x=>list[x]);
獲取你的結果DBRESULTS然後做
var results = new List<int>();
foreach (var element in dbResults)
{
if(!results.Any() || results.Last() != element)
{
results.Add(element);
}
}
INT的結果將是列表,而連續的重複
您可以檢查它在ideone
這種方法在原理上與@ wudzik的相似,但而不是每次檢查結果列表,它只是將最後一個int存儲在一個變量中,然後進行檢查。
var result = new List<int>();
int? previous;
foreach (var number in data)
{
if(!previous.HasValue || number != previous.Value){
{
result.Add(number);
previous = number;
}
}
return result
WITH cte as (--cte is your test data
SELECT
1 id,
50 value UNION SELECT
2,
50 UNION SELECT
3,
50 UNION SELECT
4,
52 UNION SELECT
5,
50 UNION SELECT
6,
30 UNION SELECT
7,
30 UNION SELECT
8,
35 UNION SELECT
9,
30 UNION SELECT
10,
30 UNION SELECT
11,
60 UNION SELECT
12,
65 UNION SELECT
13,
60 UNION SELECT
14,
60
),
temp AS --temp numbers the rows
(SELECT
id,
value,
ROW_NUMBER() OVER (ORDER BY id) rowno
FROM cte
)
SELECT
t2.value
FROM temp t1
INNER JOIN temp t2
ON t1.rowno = t2.rowno - 1 --join to the next row using rownumber
AND t1.value <> t2.value --but only return different values
+1教我新東西 –
你需要寫光標此表 – SanketS
如果你想這樣做在SQL你應該嘗試一下'ROW_NUMBER'和'OVER' http://technet.microsoft.com /en-us/library/ms186734.aspx – Colin