Под другим углом, чтобы посмотреть на это:
DECLARE @A TABLE
(
Price INT,
ID_1 INT,
ID_2 INT,
ID_3 INT
)
INSERT INTO @A
(
Price,
ID_1,
ID_2,
ID_3
)
VALUES
(129.90, 1, 1, 1),
(199.90, 2, 1, 1),
(249.90, 3, 2, 1),
(299.90, 4, 4, 3),
(399.90, 6, 5, 4)
DECLARE @B TABLE
(
Price INT,
PriceID INT
)
INSERT INTO @B
(
Price,
PriceID
)
VALUES
(129.90, 1),
(149.90, 2),
(199.90, 3),
(249.90, 4),
(299.90, 5),
(399.90, 6)
SELECT
a.Price,
SUM(b.NewPrice1),
SUM(b.NewPrice2),
SUM(b.NewPrice3)
FROM @A a
CROSS APPLY
(
SELECT
CASE WHEN PriceID = a.ID_1 THEN Price ELSE NULL END AS NewPrice1,
CASE WHEN PriceID = a.ID_2 THEN Price ELSE NULL END AS NewPrice2,
CASE WHEN PriceID = a.ID_3 THEN Price ELSE NULL END AS NewPrice3
FROM @B
) b
GROUP BY a.Price
Ошибка:
ImportError: No module named _sqlite3
средства, что SQLite 3 не находит связанную общую библиотеку. На Mac OS X это - _sqlite3.so, и это должно быть то же в других системах Unix.
Для разрешения ошибки, необходимо определить местоположение _sqlite3.so библиотеки по компьютеру и затем проверить PYTHONPATH на это местоположение каталога.
Для печати пути поиска Python вводят следующее в оболочку Python:
import sys
print sys.path
Если каталог, содержащий Вашу библиотеку, отсутствует, можно попытаться добавить его в интерактивном режиме с
sys.path.append('/your/dir/here')
и попробуйте
import sqlite3
снова. Если это работает, необходимо добавить этот каталог постоянно к переменной среды PYTHONPATH.
PS: Если библиотека отсутствует, Вы должны (пере-), устанавливают модуль.
import sqlite3
sqlite3 - Интерфейс DB-API 2.0 для баз данных SQLite.
Вы отсутствуете .so
(общий объект) - вероятно, действие по установке. В моей установке Python Linux, _sqlite3
в:
${somewhere}/lib/python2.6/lib-dynload/_sqlite3.so
Попробуйте это:
from pysqlite2 import dbapi2 as sqlite
В моей системе _sqlite3.so
расположенный в:
'/usr/lib/python2.6/lib-dynload/_sqlite3.so'
Проверьте, что каталог находится в Вашем sys.path
:
>>> import sys; print(filter(lambda p: 'lib-dynload' in p, sys.path))
['/usr/lib/python2.6/lib-dynload']
Python 2.6 определяет, где установлены заголовки разработки sqlite3, и автоматически пропускает сборку _sqlite3, если она недоступна. Если вы строите из исходного кода, установите sqlite3, включая заголовки разработки. В моем случае sudo yum install sqlite-devel
разобрал это на CentOS 4.7. Затем перестройте Python из исходного кода.
Решит ли это вашу проблему?
Python 2.5.4 (r254:67916, May 31 2009, 16:56:01)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named sqlite
>>> import sqlite3
>>>
Версия 2.5.5. Порт Python 2.5 для Mac теперь имеет такую подсказку:
"py25-sqlite3 @2.5.4 (python, databases)
This is a stub. sqlite3 is now built with python25"
Итак, обновление порта python25 до python25 @ 2.5.5_0
заставило импорт снова работать.
Так как sqlite3 входит в число зависимостей. из python25,
он создается заново при обновлении python25.
Таким образом,
$ sudo port upgrade python25
помогает в сборке портов Mac OS X.