根据不同的列值选择行

时间:2017-08-21 10:30:59

标签: sql oracle

我在表sample中有以下数据。我正在使用Oracle数据库。

column1      column2         column3
A             01           2017-07-27-04.24.58.851340
B             01           2017-07-27-06.43.19.654420
C             01           2017-08-10-08.26.47.633480

我需要根据SUBSTR(column3, 1,10)值提取不同记录的数量。

例如:

在第一行, SUBSTR(column3, 1,10)的{​​{1}}值为column3

在第二行, 2017-07-27的{​​{1}}值为SUBSTR(column3, 1,10),与第一行相同

在第三行中,column3的{​​{1}}值为2017-07-27,与前两行不同。

因此,根据不同的SUBSTR(column3, 1,10)值,计数应返回为column3

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:3)

persistUserAuth(userAuth);
openHomeActivity();

答案 1 :(得分:2)

由于您似乎将时间戳值存储为字符串(您不应该这样做,并且应该将它们存储为时间戳),您可以将它们转换为时间戳,然后将时间组件截断到当天的开头:

SELECT   COUNT( DISTINCT TRUNC( TO_TIMESTAMP( column3, 'YYYY-MM-DD-HH24.MI.SS.FF6' ) ) )
           AS num_days
FROM     your_table

但你也可以使用字符串值:

SELECT   COUNT( DISTINCT SUBSTR( column3, 1, 10 ) ) AS num_days
FROM     your_table

如果您转换表格以将其存储为时间戳,那么您可以使用:

SELECT   COUNT( DISTINCT TRUNC( column3 ) ) AS num_days
FROM     your_table