Пожалуйста помогите с запросом.
У меня три таблицы.
1.
SQL |
abonent |
SQL |
plata_abonent |
SQL |
month |
SQL |
select `abonent`.`surname`, `abonent`.`name`, `oplata_abonent`.`summa`, `oplata_abonent`.`date`, `month`.`name` as total from `abonent` inner join `oplata_abonent` on (`abonent`.`dogovor`=`oplata_abonent`.`id_abonenta`) inner join `month` on (`oplata_abonent`.`monthoplati`=`month`.`month`) where `oplata_abonent`.`summa`!='' and `oplata_abonent`.`date` BETWEEN '2009-06-01' AND '2009-06-15' ORDER BY `oplata_abonent`.`date` |
SQL |
surname name summa date total www eee 130.00 2009-06-01 Июнь www eee 231.00 2009-06-02 Июль www eee 260.00 2009-06-09 Август www eee 70.00 2009-06-11 Сентябрь |
SQL |
surname name summa date total www eee 130.00 2009-06-01 Июнь 231.00 2009-06-02 Июль 260.00 2009-06-09 Август 70.00 2009-06-11 Сентябрь |
SQL |
surname: www name: eee summa: 130.00, 231.00,260.00, 70.00, date: 2009-06-01, 2009-06-02, 2009-06-09, 2009-06-11 total: Июнь,Июль,Август,Сентябрь |
SQL |
SET @tmp = '' select @tmp = @tmp + date + ', ' from #abonent |
SQL |
select SUBSTRING(@tmp, 0, LEN(@tmp)) |
Цитата (Oyeme @ 15.06.2009 - 14:24) | ||
таким способом : declare @tmp varchar(250)
20.04.2004 20.04.2003 20.04.2001 Result : 20.04.2004 , 20.04.2003 ,20.04.2001 |
Цитата (sergeiss @ 15.06.2009 - 10:51) | ||||
А я вот что-то не понял, каким образом этот запрос будет работать... Можно пояснить? |
SQL |
CREATE TABLE #Temp ( [Numbers] varchar(40) ) INSERT INTO #Temp VALUES('One'); INSERT INTO #Temp VALUES('Two'); INSERT INTO #Temp VALUES('Three'); INSERT INTO #Temp VALUES('Four'); INSERT INTO #Temp VALUES('Five'); |
SQL |
DECLARE @str VARCHAR(100) SELECT @str = COALESCE(@str + ' , ', '') + [Numbers] FROM #Temp Print @str |
SQL |
SELECT DISTINCT STUFF( (SELECT '*' + Numbers from #Temp FOR XML PATH('')),1,1,'') as Numbers FROM #Temp |
Цитата (sergeiss @ 15.06.2009 - 10:51) |
А я вот что-то не понял, каким образом этот запрос будет работать... Можно пояснить? |
SQL |
select @tmp = @tmp + date + ', ' from #abonent select SUBSTRING(@tmp, 0, LEN(@tmp)) |
SQL |
select @tmp = @tmp + date + ', ' from select SUBSTRING(@tmp, 0, LEN(@tmp)) |
SQL |
SUBSTRING(@tmp, 0, LEN(@tmp) |
Цитата (glock18 @ 15.06.2009 - 11:12) | ||||||||
Я сам так никогда не делал, но по задумке автора, если я правильно понял, это должно дописывать в переменную @tmp дату... Другой вопрос - будет ли.
тут, очевидно, хотели закомментировать #abonent. Запрос так вообще не будет работать.
Вложенный запрос - очень хорошо напоминает об Индусском коде. Команда
потрясает воображение ![]() |
Цитата (Oyeme @ 15.06.2009 - 10:59) | ||||||||||||
Создаеться процедура которая плюсует строки,через запятую. Пример magine you have a column like this: Numbers --------- One Two Three Four Five The output you desire is to combine all the rows and put it as one row similar to the following: One|Two|Three|Four|Five Let us see how to do it: -- Sample Script to create the table and insert rows
-- Query to combine multiple rows into one
You can also achieve the same result using STUFF
|
Цитата (Alchemist @ 16.06.2009 - 13:44) |
не надо возиться с процедурами и переменными... все что вам надо - это GROUP_CONCAT(). А вот по какаим параметрам группировать, смотрите сами - это из вашего поста не ясно... |