Поле даты, преобразованное в строку - не позволяет Order By - PullRequest
1 голос
/ 09 июня 2011

Я использую SQL 2008. (фактически в asp).

SELECT  orderId, CONVERT(varchar, orderDate, 101) AS Date_Ordered, CONVERT(varchar, sentDate, 101) AS Date_Shipped, 
FROM orders 
GROUP BY orderId, CONVERT(varchar, o.orderDate, 101), CONVERT(varchar, o.sentDate, 101)
ORDER BY Date_Shipped

OK, причина, по которой я использую Преобразование в выборе, заключается в том, что мои данные имеют даты с разным временем. но я хочу все результаты с тем же днем. Поэтому я использовал конвертировать.

Моя проблема в том, что я не могу понять, как сделать заказ по. Я попытался отсортировать по Date_Shipped, но теперь это строка, поэтому он не сортируется должным образом.

Может кто-нибудь помочь?

Ответы [ 2 ]

1 голос
/ 09 июня 2011

У вас есть SQL Server 2008, поэтому вы можете использовать тип даты

SELECT
    orderId,
    CONVERT(varchar, orderDate, 101) AS Date_Ordered,
    CONVERT(varchar, CAST(sentDate as date), 101) AS Date_Shipped
FROM orders 
GROUP BY
   orderId, CONVERT(varchar, o.orderDate, 101), CAST(sentDate as date)
ORDER BY
   CAST(sentDate as date)

Я не могу точно вспомнить, разрешено ли это, но, надеюсь, вы поняли: если нет, используйте это

SELECT
    orderId,
    Date_Ordered,
    CONVERT(varchar, sentDate2, 101) AS Date_Shipped
FROM
    (
    SELECT
        orderId,
        CONVERT(varchar, orderDate, 101) AS Date_Ordered,
        CAST(sentDate as date) AS sentDate2
    FROM orders o
    GROUP BY
       orderId, CONVERT(varchar, orderDate, 101), CAST(sentDate as date)
    ) foo
ORDER BY
    sentDate2
0 голосов
/ 10 июня 2011
SELECT
  orderId,
  CONVERT(varchar, orderDate, 101) AS Date_Ordered,
  CONVERT(varchar, sentDate, 101) AS Date_Shipped, 
FROM orders 
GROUP BY
  orderId,
  CONVERT(varchar, orderDate, 101),
  CONVERT(varchar, sentDate, 101)
ORDER BY MAX(sentDate)

Кстати, псевдонимы o в вашем запросе ошибочны, потому что у вас нет таблицы с таким псевдонимом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...