我试图对一组数据进行分组,对于某些字段,我需要根据ttype选择一个特定值,例如我有以下几行:
caseid age iss gcs ttype
00170 64 25 17 Transfer Out
00170 64 27 15 Transfer In
00201 24 14 40 Transfer In
如果caseID有ttype'转出'我想使用此行中的ISS和GCS值,否则使用'转入'中的值。行。
基于以上示例的我想要的输出是:
caseid age iss gcs
00170 64 25 17
00201 24 14 40
我当前的选择声明是:
select caseid, max(age), max(iss), max(gcs)
from Table1
group by caseid
我所知道的不正确,但如何从特定行指定ISS和GCS的值?
由于
编辑 - 我不总是需要从扩展数据中的Row1,下表中选择:
caseid age iss gcs los ttype disdate
170 64 25 17 5 Transfer Out 2014-01-02 00:00:00.000
170 64 27 15 1 Transfer In 2014-01-04 00:00:00.000
201 24 14 40 4 Transfer In 2014-01-04 00:00:00.000
在这种情况下,我想要row1的最大年龄和ISS和GCS数字,但是我需要对LOS求和并选择第2行的disdate(即最新日期),所以我的输出将是:< / p>
caseid age iss gcs los disdate
170 64 25 17 6 2014-01-04
201 24 14 40 4 2014-01-04
这可能吗?
答案 0 :(得分:2)
您可以使用CTE和ROW_NUMBER
+ Over
- 条款(根据您更新的问题编辑):
WITH CTE AS
(
SELECT caseid, age, iss, gcs, los, ttype, disdate,
SumLos = SUM(los) OVER (PARTITION BY caseid),
LatestDisDate = MAX(disdate) OVER (PARTITION BY caseid),
rn = ROW_NUMBER() OVER (PARTITION BY caseid
ORDER BY CASE WHEN ttype = 'Transfer Out'
THEN 0 ELSE 1 END ASC, disdate ASC)
FROM dbo.Table1
)
SELECT caseid, age, iss, gcs, los = SumLos, disdate = LatestDisDate
FROM CTE
WHERE rn = 1
答案 1 :(得分:0)
我认为这就是你所需要的 -
QString hist::inputstring() {
QModelIndexList templatelist =
ui->listView->selectionModel()->selectedIndexes();
QString stringlist;
foreach (const QModelIndex &index, templatelist) {
stringlist.append(index.data(Qt::DisplayRole).toString());
}
return stringlist;
}