|
CASE в SQL -запросе | ☑ | ||
---|---|---|---|---|
0
Игорь_МММ
05.06.18
✎
19:29
|
что тут не так:
|Select | TT.UnitPos, | TT.ParentPOS, | TT.TopParentPOS, | TT.CommonPOS, | Nomenclature = | CASE TT.AccType | WHEN 0 THEN TT.NomCompl | ELSE TT.Nomenclature | END, | TT.UnitsName, | TT.Article, |
|||
1
Franchiser
гуру
05.06.18
✎
19:30
|
Так нельзя
|
|||
2
Игорь_МММ
05.06.18
✎
19:32
|
(1) а как можно?
|
|||
3
Franchiser
гуру
05.06.18
✎
19:32
|
В SQL нет понятие булеов, переделай чтобы число получилось
|
|||
4
Franchiser
гуру
05.06.18
✎
19:32
|
Номенклатуру в case поставь
|
|||
5
Tateossian
05.06.18
✎
19:33
|
Булево 0x00 - это истина, 0х01 - ложь. Тип bit
|
|||
6
Franchiser
гуру
05.06.18
✎
19:33
|
Что такое nomenclature? Может тебе надо as nomenclature
|
|||
7
Franchiser
гуру
05.06.18
✎
19:34
|
(5) ок, а нужен ли ему тип бит?
|
|||
8
Игорь_МММ
05.06.18
✎
19:35
|
(3)AccType это число
(6)да, nomenclature - это Алиас |
|||
9
Franchiser
гуру
05.06.18
✎
19:36
|
Тогда равно убери и после case напиши as nomenclature
|
|||
10
Игорь_МММ
05.06.18
✎
19:36
|
+(8) в зависимости от AccType хочу присвоить nomenclature либо
NomCompl либо Nomenclature |
|||
11
Tateossian
05.06.18
✎
19:37
|
(7) Не факт, но каков вопрос, таков ответ)
|
|||
12
Игорь_МММ
05.06.18
✎
19:38
|
|Select
| TT.UnitPos, | TT.ParentPOS, | TT.TopParentPOS, | TT.CommonPOS, | CASE TT.AccType | WHEN 0 THEN TT.NomCompl | ELSE TT.Nomenclature | END AS Nomenclature, | TT.UnitsName, | TT.Article, так? |
|||
13
Tateossian
05.06.18
✎
19:38
|
(10) Профайлером посмотри, там немного по другому кейс в запросах выглядит
|
|||
14
Franchiser
гуру
05.06.18
✎
19:39
|
(11) по ком тип bit нормально передается?
|
|||
15
Franchiser
гуру
05.06.18
✎
19:40
|
(12) нет
Case when ... Then .... When .... Then ... Else ... End |
|||
16
Tateossian
05.06.18
✎
19:40
|
(12) CASE WHEN AccType = 0х00 THEN ... Дальше ОК
|
|||
17
Tateossian
05.06.18
✎
19:41
|
(14) Используй ADO, там АДО.Комманд как текст идет.
|
|||
18
Игорь_МММ
05.06.18
✎
19:43
|
CASE
| WHEN TT.AccType=0 THEN TT.NomCompl | ELSE TT.Nomenclature | END AS Nomenclature, так не взлетает (16) а что такое ..х00? |
|||
19
Franchiser
гуру
05.06.18
✎
19:44
|
(17) не понял если я через 1с++ хочу получить тип bit, что я увижу на выходе в recordset ?
|
|||
20
Franchiser
гуру
05.06.18
✎
19:45
|
(18) что пишет в msms?
|
|||
21
Franchiser
гуру
05.06.18
✎
19:46
|
(18) это если тип bit значит false
|
|||
22
Игорь_МММ
05.06.18
✎
19:46
|
(20) Ошибка при вызове метода контекста (Execute)
по причине: Произошла исключительная ситуация (0x80004005) |
|||
23
Franchiser
гуру
05.06.18
✎
19:48
|
(22) в msms запусти а не через odbc
|
|||
24
Игорь_МММ
05.06.18
✎
19:51
|
(23) млин, ребята .. что такое msms ?
практически первый раз пишу sql запрос |
|||
25
youalex
05.06.18
✎
20:06
|
||||
26
youalex
05.06.18
✎
20:07
|
(25) + ссылка почему-то не аллё.
SQL Server Management Studio |
|||
27
Franchiser
гуру
05.06.18
✎
20:07
|
Microsoft SQL management studio
|
|||
28
Franchiser
гуру
05.06.18
✎
20:12
|
(12) покажи весь запрос
|
|||
29
Игорь_МММ
05.06.18
✎
20:16
|
(28)
"Select | TT.UnitPos, | TT.ParentPOS, | TT.TopParentPOS, | TT.CommonPOS, | CASE | WHEN TT.AccType=0 THEN TT.NomCompl | ELSE TT.Nomenclature | END AS Nomenclature, | TT.UnitsName, | TT.Article, | TT.NomenclatureID, | TT.GroupOper, | TT.Name, | TT.Count, | TT.GoodsID, | TT.FurnType, | TT.GroupName, | TT.AccMatID, | TT.AccType, | TT.AccCount |FROM (Select | TElems.UnitPos, | TElems.ParentPOS, | TElems.TopParentPOS, | TElems.CommonPOS, | TNNomenclature.Name AS Nomenclature, | TNNomenclature.UnitsName AS UnitsName, | TNNomenclature.Article AS Article, | TNNomenclature.ID AS NomenclatureID, | TNNomenclature.MatTypeName AS GroupOper, | TElems.Name AS Name, | TElems.Count, | TElems.GoodsID, | TElems.FurnType, | TNNomenclature.GroupName, | TAccessories.AccMatID, | TAccessories.AccType, | TAccessories.AccCount, | TNN.Name AS NomCompl, | TNN.Article AS ArtCompl |FROM TElems,TNNomenclature,TAccessories,TNNomenclature AS TNN |WHERE TElems.PriceID=TNNomenclature.ID AND |TElems.UnitPos=TAccessories.UnitPos AND TAccessories.AccMatID=TNN.ID) AS TT"; если CASE убираю - все работает |
|||
30
youalex
05.06.18
✎
20:17
|
(12) это нормальная(сокращенная) форма Case, так можно и в скуле,и в 1с. Учти еще, что у тебя в ветках условия должен быть один тип (ну или мог преобразоваться неявно). Составных типов здесь нет)
|
|||
31
Игорь_МММ
05.06.18
✎
20:25
|
(30)
| CASE | WHEN 0 THEN 1 | ELSE 2 | END AS Nomenclature, даже так не проходит |
|||
32
youalex
05.06.18
✎
20:38
|
(31) а так: select case 7 when 7 then 1 else 0 end ?
запускай (27) и смотри там. |
|||
33
youalex
05.06.18
✎
20:40
|
(31) зы.так и не пройдет, ты операнд потерял, после case.
|
|||
34
Игорь_МММ
05.06.18
✎
20:44
|
CASE TT.AccType
| WHEN 0 THEN TT.NomCompl | ELSE TT.Nomenclature | END AS Nomenclature, результат тот же |
|||
35
Franchiser
гуру
05.06.18
✎
20:49
|
(29) это устаревшая форма записи: ни одного джойна нет, потом в конце "as Tt" это лишнее, да и скобка открывающая отсутствует
|
|||
36
youalex
05.06.18
✎
20:55
|
(35) as TT как раз не лишнее. У вложенного должен быть псевдоним. Другой вопрос, что вложенный запрос - это лишнее, да и устаревшее.
|
|||
37
Franchiser
гуру
05.06.18
✎
20:57
|
(29) хотя нет, у тебя вложенный запрос. Then пропустил в case
|
|||
38
trad
05.06.18
✎
22:59
|
Надо разобраться с двойным TNNomenclature
|
|||
39
Fram
06.06.18
✎
00:49
|
сдается мне что ошибка, которую ТС тщательно скрывает, к CASE не имеет никакого отношения ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |