Witam,
Mam takie zapytanie:
ob_TowRodzaj = CASE WHEN ob_TowRodzaj = 1 THEN 'Towar' ELSE ob_TowRodzaj END,
Nie umiem następujących rzeczy:
- nadać kolumnie ob_TowRodzaj nazwy Rodzaj (dodanie na końcu AS Rodzaj daje błąd,
- użyć właściwie funkcji CONVERT() (muszę przekonwertować ob_TowRodzaj na string, bo jest int)
Oczywiście próbowałem różnych kombinacji, gdy nie ma warunku CASE umiem wszystko zrobić, wykorzystując CASE zapytanie mi się rozsypuje. Będę wdzięczny za pomoc.
Pozdrawiam,
Cale zapytanie:
DECLARE @dataDo DATETIME
SET @DataDo = '20161231'
SELECT
Year(dok_DataWyst) AS [Year],
Month(dok_DataWyst) AS [Month],
ob_TowRodzaj = CASE WHEN ob_TowRodzaj = 1 THEN '111' ELSE ob_TowRodzaj END,
tw_Id AS 'Id towaru',
tw_Nazwa = CASE WHEN tw_Nazwa = '' THEN '(Brak nazwy towaru)' ELSE
CASE WHEN tw_Nazwa IS NULL THEN '(Usługa jednorazowa)' ELSE tw_Nazwa END END,
tw_Symbol AS Symbol,
SUM(ob_IloscMag * ob_Znak) as Ilość
FROM vwZstSprzWgKhnt LEFT JOIN tw__Towar ON ob_TowId = tw_Id LEFT JOIN sl_GrupaTw
ON tw_IdGrupa = grt_Id WHERE dok_Status<>2
AND (( (dok_DataWyst>='20160101') AND (dok_DataWyst<='20161231') )
AND (dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp)
IN (131072, 131074, 131075, 131076, 131077, 262144, 393216, 393217, 393218, 1376256, 1376257,
1376258, 1376259, 917504, 917505, 4063232)) AND (dok_MagId IN (1))) AND ob_TowRodzaj & 15 > 0
GROUP BY
Year(dok_DataWyst), Month(dok_DataWyst),
ob_TowRodzaj, tw_Nazwa, tw_Symbol, grt_Nazwa,tw_JednMiary, tw_Id