C# SqlClient按日期计数
我无法向谷歌表达我的问题,以了解如何做到这一点,我希望有人能帮助我 这是我的出发点C# SqlClient按日期计数,c#,sql,sql-server,C#,Sql,Sql Server,我无法向谷歌表达我的问题,以了解如何做到这一点,我希望有人能帮助我 这是我的出发点 SqlCommand command = new SqlCommand("SELECT BOOK_ID, BOOK_DATE, Sum(BOOK_COUNT) " + "FROM BOOKS " + "WHERE (BOOK_ID = '1' OR " +
SqlCommand command = new SqlCommand("SELECT BOOK_ID, BOOK_DATE, Sum(BOOK_COUNT) " +
"FROM BOOKS " +
"WHERE (BOOK_ID = '1' OR " +
"BOOK_ID = '2' OR " +
"BOOK_ID = '3' ) " +
"AND STATUS = '0' " +
"GROUP BY BOOK_ID, BOOK_DATE ", cn);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int id = (int)reader[0];
DateTime date = (DateTime)reader[1];
int count = (int)reader[2];
if (id == 1)
{
/*...*/
}
if (id == 2)
{
/*...*/
}
if (id == 3)
{
/*...*/
}
}
reader.Close();
DBSCA
我想排序的日期,如果日期和id是相同的,那么得到的书籍计数。。。
像这样:
BOOK_DATE BOOK_ID BOOK_COUNT
2014.11.17 1 1
2014.11.21 2 1
2014.11.25 2 2
2014.11.26 1 2
2014.11.26 3 2
2014.11.27 3 1
2014.11.28 3 1
如果有人能帮我,谢谢,我为英语不好道歉
ORDER BY DATEADD(DAY, 0, DATEDIFF(DAY, 0, BOOK_DATE)), Sum(BOOK_COUNT)
DATEADD(dd,0,DATEDIFF(DAY,0,BOOK_DATE))只获取记录的日期部分。您还需要使用此功能进行分组
由于@marc_s的建议而编辑
DATEADD(dd,0,DATEDIFF(DAY,0,BOOK_DATE))只获取记录的日期部分。您还需要使用此功能进行分组
由于@marc_s的建议而编辑
DATEADD(dd,0,DATEDIFF(DAY,0,BOOK_DATE))只获取记录的日期部分。您还需要使用此功能进行分组
由于@marc_s的建议而编辑
DATEADD(dd,0,DATEDIFF(DAY,0,BOOK_DATE))只获取记录的日期部分。您还需要使用此功能进行分组
由于@marc_s建议按结果集中的第二个值排序而编辑,只需添加
按2排序
SqlCommand command = new SqlCommand("SELECT BOOK_ID, BOOK_DATE, Sum(BOOK_COUNT) " +
"FROM BOOKS " +
"WHERE (BOOK_ID = '1' OR " +
"BOOK_ID = '2' OR " +
"BOOK_ID = '3' ) " +
"AND STATUS = '0' " +
"GROUP BY BOOK_ID, BOOK_DATE
ORDER BY 2", cn);
要按结果集中的第二个值排序,只需添加
orderby2
SqlCommand command = new SqlCommand("SELECT BOOK_ID, BOOK_DATE, Sum(BOOK_COUNT) " +
"FROM BOOKS " +
"WHERE (BOOK_ID = '1' OR " +
"BOOK_ID = '2' OR " +
"BOOK_ID = '3' ) " +
"AND STATUS = '0' " +
"GROUP BY BOOK_ID, BOOK_DATE
ORDER BY 2", cn);
要按结果集中的第二个值排序,只需添加
orderby2
SqlCommand command = new SqlCommand("SELECT BOOK_ID, BOOK_DATE, Sum(BOOK_COUNT) " +
"FROM BOOKS " +
"WHERE (BOOK_ID = '1' OR " +
"BOOK_ID = '2' OR " +
"BOOK_ID = '3' ) " +
"AND STATUS = '0' " +
"GROUP BY BOOK_ID, BOOK_DATE
ORDER BY 2", cn);
要按结果集中的第二个值排序,只需添加
orderby2
SqlCommand command = new SqlCommand("SELECT BOOK_ID, BOOK_DATE, Sum(BOOK_COUNT) " +
"FROM BOOKS " +
"WHERE (BOOK_ID = '1' OR " +
"BOOK_ID = '2' OR " +
"BOOK_ID = '3' ) " +
"AND STATUS = '0' " +
"GROUP BY BOOK_ID, BOOK_DATE
ORDER BY 2", cn);
这个<编码>将<编码>图书日期转换为<编码>日期,然后在
分组中使用它
SELECT BOOK_ID,
CONVERT(DATE, BOOK_DATE),
Sum(BOOK_COUNT)
FROM BOOKS
WHERE BOOK_ID IN (1,2,3)
AND STATUS = 0
GROUP BY BOOK_ID,
CONVERT(DATE, BOOK_DATE)
这个<编码>将<编码>图书日期
转换为<编码>日期,然后在分组中使用它
SELECT BOOK_ID,
CONVERT(DATE, BOOK_DATE),
Sum(BOOK_COUNT)
FROM BOOKS
WHERE BOOK_ID IN (1,2,3)
AND STATUS = 0
GROUP BY BOOK_ID,
CONVERT(DATE, BOOK_DATE)
这个<编码>将<编码>图书日期
转换为<编码>日期,然后在分组中使用它
SELECT BOOK_ID,
CONVERT(DATE, BOOK_DATE),
Sum(BOOK_COUNT)
FROM BOOKS
WHERE BOOK_ID IN (1,2,3)
AND STATUS = 0
GROUP BY BOOK_ID,
CONVERT(DATE, BOOK_DATE)
这个<编码>将<编码>图书日期
转换为<编码>日期,然后在分组中使用它
SELECT BOOK_ID,
CONVERT(DATE, BOOK_DATE),
Sum(BOOK_COUNT)
FROM BOOKS
WHERE BOOK_ID IN (1,2,3)
AND STATUS = 0
GROUP BY BOOK_ID,
CONVERT(DATE, BOOK_DATE)
分组依据
日期时间字段的日期部分:
SqlCommand command = new SqlCommand("SELECT BOOK_ID, DATEADD(DAY, 0, DATEDIFF(DAY, 0, BOOK_DATE)), Sum(BOOK_COUNT) " +
"FROM BOOKS " +
"WHERE (BOOK_ID = '1' OR " +
"BOOK_ID = '2' OR " +
"BOOK_ID = '3' ) " +
"AND STATUS = '0' " +
"GROUP BY BOOK_ID, DATEADD(DAY, 0, DATEDIFF(DAY, 0, BOOK_DATE))
ORDER BY 2", cn);
分组依据
日期时间字段的日期部分:
SqlCommand command = new SqlCommand("SELECT BOOK_ID, DATEADD(DAY, 0, DATEDIFF(DAY, 0, BOOK_DATE)), Sum(BOOK_COUNT) " +
"FROM BOOKS " +
"WHERE (BOOK_ID = '1' OR " +
"BOOK_ID = '2' OR " +
"BOOK_ID = '3' ) " +
"AND STATUS = '0' " +
"GROUP BY BOOK_ID, DATEADD(DAY, 0, DATEDIFF(DAY, 0, BOOK_DATE))
ORDER BY 2", cn);
分组依据
日期时间字段的日期部分:
SqlCommand command = new SqlCommand("SELECT BOOK_ID, DATEADD(DAY, 0, DATEDIFF(DAY, 0, BOOK_DATE)), Sum(BOOK_COUNT) " +
"FROM BOOKS " +
"WHERE (BOOK_ID = '1' OR " +
"BOOK_ID = '2' OR " +
"BOOK_ID = '3' ) " +
"AND STATUS = '0' " +
"GROUP BY BOOK_ID, DATEADD(DAY, 0, DATEDIFF(DAY, 0, BOOK_DATE))
ORDER BY 2", cn);
分组依据
日期时间字段的日期部分:
SqlCommand command = new SqlCommand("SELECT BOOK_ID, DATEADD(DAY, 0, DATEDIFF(DAY, 0, BOOK_DATE)), Sum(BOOK_COUNT) " +
"FROM BOOKS " +
"WHERE (BOOK_ID = '1' OR " +
"BOOK_ID = '2' OR " +
"BOOK_ID = '3' ) " +
"AND STATUS = '0' " +
"GROUP BY BOOK_ID, DATEADD(DAY, 0, DATEDIFF(DAY, 0, BOOK_DATE))
ORDER BY 2", cn);
仅供参考(1,2,3)
如果图书ID
是一个数字数据类型(应该是!),那么您不应该在其中条款中添加不必要的单引号(应该是!),那么您不应该在WHERE
clauseFYI较短的符号WHERE BOOK_ID in(1,2,3)…中添加不必要的单引号。
如果BOOK_ID
是数字数据类型(应该是!),则不应在WHERE
clauseFYI较短符号WHERE BOOK\u ID in(1,2,3)…中添加不必要的单引号。
如果BOOK\u ID
是数字数据类型(应该是!),那么您不应该在中添加不必要的单引号,因为在中,
子句我更喜欢使用日期添加中的日期
指示器-它比dd
明显得多,也更清晰……(这使它更易于维护!)我更喜欢使用DATEADD
中的DAY
指示器-它比dd
更明显、更清晰……(这使它更易于维护!)我更喜欢使用DATEADD
中的DAY
指示器-它比dd
更明显、更清晰……(这使它更易于维护!)我更喜欢使用DATEADD
中的DAY
指示器-它比dd
更明显、更清晰……(这使它更易于维护!)我更喜欢使用DATEADD
中的DAY
指示器-它比dd
更明显、更清晰……(这使它更易于维护!)我更喜欢使用DATEADD
中的DAY
指示器-它比dd
更明显、更清晰……(这使它更易于维护!)我更喜欢使用DATEADD
中的DAY
指示器-它比dd
更明显、更清晰……(这使它更易于维护!)我更喜欢使用日期添加中的日期
指示器-它比dd
更明显、更清晰(这使它更易于维护!)假设?BOOK_ID`是数字的(或应该是数字的),我会避免在WHERE
子句中添加不必要的单引号…假设?BOOK\u ID`是数字的(或应该是),我会避免在WHERE
子句中添加不必要的单引号…假设?BOOK\u ID`是数字的(或应该是),我会避免在WHERE
子句中添加不必要的单引号…假设?BOOK_ID`是数字(或应该是数字),我会避免在WHERE
子句中添加不必要的单引号。。。